Swift中关于字符串的截取与OC还是有很大的区别的,要说字符串的截取,就要先说下“范围”,OC中使用的是NSRange
函数来指示一个起始位置和长度,而Swift中的范围使用起来就方便得多,有两种形式:
1...5表示闭区间[1,5],也就是从1到5的范围。
1..<5表示闭区间[1,5),也就是从1到4的范围。
例如:
for index in 1...5 {
print(index)
}
一、字符串拼接
Swift字符串拼接较于OC要简便一些,例如:
let string1 = "Swift很不错,"
let string2 = "你觉得呢?"
let string3 = string1 + string2
print(string3)
//字符串相等可以直接用 == 来判断
if string1 == string2 {
print("两个相等")
}
二、字符串截取
Swift在截取字符串时,是由String.Index
类型来索引的,这个其实是字符串的字素位,我们可以用这个字素位来截取、插入、删除String
中的元素。String
是支持下表操作的,对字符串进行操作时,首先要指定起始是从头部开始,还是从尾部开始;头部开始调用startIndex
,尾部开始调用endIndex
;注意:从尾部开始时,长度要为负值。例如:
let str = "Hello";
//截取某字符串的前3个字符串
let sub1 = str.prefix(3)
//截取某字符串的后3个字符串
let sub2 = str.suffix(3)
//通过获取字素位来截取字符串
let index1 = str.index(str.endIndex, offsetBy: -3)
let sub3 = str[index1..<str.endIndex]
//截取字符串的第1个字符到第4个字符范围的字符串
let index2 = str.index(str.startIndex, offsetBy: 1)
let index3 = str.index(str.startIndex, offsetBy: 3)
let sub4 = str[index2...index3]
//只截取字符串的一个字素,返回值是Character类型
let character = str[str.index(str.startIndex, offsetBy: 3, limitedBy: str.endIndex)!]
print("character = \(String(character))")
//返回一个可选类型的范围:Range<String.Index>
//lowerBound不包含e upperBound包含e
let range = str.range(of: "e")!
let s = str[str.startIndex..<range.lowerBound]
二、字符串删除/替换/插入某部分
删除和替换字符串的某部都需要用到范围,例如:
var str = "Hello Swift"
let start = str.index(str.startIndex, offsetBy: 1)
let end = str.index(str.startIndex, offsetBy: 3)
//删除一段内容
str.removeSubrange(start...end)
//删除单个字素,Swift中单个字素是Charater类型的,删除单个字素的方法是remove,无论是删除单个字素还是删除整段,方法的参数类型都是String.Index
str.remove(at: startIndex)
//替换一段内容,两个参数:替换的范围和用来替换的内容
str.replaceSubrange(start...end, with: "new")
//替换一段内容,有返回值,两个参数:要替换的内容和用来替换的内容
let reStr = h.replacingOccurrences(of: "Hello", with: "H")
//插入一段内容,两个参数:插入的起点和用来插入的内容
str.insert(contentsOf: "SWIFT", at: start)
//插入一个字素,注意:只能是一个字素
str.insert("s", at: start)