Swift中关于字符串的截取与OC还是有很大的区别的,要说字符串的截取,就要先说下“范围”,OC中使用的是NSRange函数来指示一个起始位置和长度,而Swift中的范围使用起来就方便得多,有两种形式:

  1. 1...5表示闭区间[1,5],也就是从1到5的范围。
  2. 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)