Swift2.0 中的String(二):基本操作

Swift中的字符串,第二篇,基本操作。其他的几篇传送门:

首先,我们要记得使用字符串最常用的两个参数:下标(Index)和范围(Range),几乎所有API都要用到它们

let offset = str.startIndex.advancedBy(2)// offset: 3rd char
let range  = Range(start: str.startIndex.advancedBy(3), end: str.endIndex.advancedBy(-2))// range: 3..<6, "345"

强制类型转换

let n      = Int(str)!
String("the number is \(n)")
String(format:"%.2f,  %i", 9.1, 304)

内容反转

你看到的是非授权版本!爬虫凶猛,请尊重知识产权!

转载请注明出处:http://conanwhf.github.io/2015/12/03/Swift_String_2/

访问原文「Swift2.0 中的String(二):基本操作」获取最佳阅读体验并参与讨论

String(str.characters.reverse())

删除和部分删除

str.removeRange(range)
str.removeAtIndex(offset)
String(str.characters.dropFirst())
String(str.characters.dropFirst(3))
String(str.characters.dropLast())
String(str.characters.dropLast(3))
//以上对character的操作不改变原来的值!
// 删除头尾空白字符
"     I love you ".stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
// 删除头尾字符集
" I love you, too!".stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ",. !"))
//清空
str.removeAll()

获取固定位置的子串

str.substringToIndex(offset)
str.substringFromIndex(offset)
str.substringWithRange(range)
str[range]

分割

st         = "<123, test2,???>   <测试: 数据  .>"
// 用固定字符分割
str.componentsSeparatedByString(" ")
// 用固定字符集分割
str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: ", ."))

过滤/查找替换
使用替换字符串的API,让替换的目标字符串为空即为过滤

// 替换固定位置子串
str.stringByReplacingCharactersInRange(range, withString: "!!!")
// 查找所有匹配并替换/过滤
str.stringByReplacingOccurrencesOfString("???", withString: "~")
str.stringByReplacingOccurrencesOfString(" ", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
// 过滤字符集合(分割后合并)
let arr    = str.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString:"-<>"))
arr.joinWithSeparator("")

合并/拼接

s1 + s2 + s3
str.appendContentsOf("123")
str.stringByAppendingString("000")         //不改变原值!
str.stringByAppendingFormat("- num %d ", 100)      //不改变原值!
// 以固定字符串为分隔符拼接
[str, str, str].joinWithSeparator("\n")

插入

str.insert(" ", atIndex: offset)
str.insertContentsOf(" hello".characters, at: offset)
str.replaceRange(Range( start:offset, end: offset ), with: "???OK!!!")

判断前缀或后缀

str.hasPrefix("01")
str.hasSuffix("567")

比较字符串

s1.characters.elementsEqual(s2.characters)
str.characters.elementsEqual("01234567".characters)
s1 == s2
"111" < "222"

匹配字符串

str.rangeOfString("efg")
str.rangeOfString("efg", options: NSStringCompareOptions.CaseInsensitiveSearch, range: nil)

固定位置的部分替换

str.replaceRange(range, with: "test_for_replace")
str.stringByReplacingCharactersInRange(range, withString: "哈哈😄Tes\nt")