swift 字符串

字符串字面量

可以在代码中包含一段预定义的字符串值作为字符串字面量。字符串字面量是由双引号包裹着的具有固定顺序的文本字符集。字符串字面量可以用于为常量和变量提供初始化值:
let someString = "some string"

初始化空字符串

要创建一个空字符串作为初始值,可以将空的字符串字面量赋值给变量,也可以初始化一个新的string实例:
        var emptyString = ""
        var anotherEmptyString = String()
可以通过检查其bool类型的isEmpty属性来判断字符串是否为空:
  if emptyString.isEmpty{
        print("empty")
  }

字符串可变性

可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改:
 var variableString = "Horse"
 variableString += "and carriage"

使用字符

 for character in "Dog!?".characters {
            print(character)
 }

通过标明一个Character类型并用字符字面量进行赋值,可以建立一个独立的字符串常量或者变量:
        let exclamationMark:Character = "!"
字符串可以通过传递一个值类型为Character的数组作为自变量来初始化:
let catCharacters:[Character] = ["C","a","t","!","?"]
let catString = String(catCharacters)
print(catString)

连接字符串和字符

字符串可以通过加法运算符相加在一起创建一个新的字符串:
 let string1 = "hello"
        let string2 = "there"
        var welcome = string1 + string2
可以通过加法赋值运算符将一个字符串添加一个已经存在字符串变量上:
var instruction = "look over"
        instruction += string2
可以用append() 方法将一个字符附加到一个字符串变量的尾部:
welcome.append(exclamationMark)

字符串插值

字符串插值是一种构建新字符串的方式,可以在其中包含常量、变量、字面量和表达式。插入的字符串字面量的每一项都在以反斜线为前缀的圆括号中:
     let multiplier = 3
        let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

访问和修改字符串

字符串索引

每一个String值都有一个关联的索引类型,String.Index,它对应这字符串中的每一个Character的位置
前面提到,不同的字符可能会占用不同数量的内存空间,所以要知道Character的确定位置,就必须从String开头遍历每个Unicode标量直到结尾。因此,swift的字符串不能用整数做索引。
使用startIndex属性可以获取一个String的第一个Character的索引。使用endIndex属性可以获取最后一个Character的后一个位置的索引。因此,endIndex属性不能作为一个字符串的有效下标。如果String是空串,startIndex和endIndex是相等的。
通过调用String的index(before:)或index(after:)方法,可以立即得到前面或者后面的一个索引。还可以通过调用index(_:offectBy:)方法来获取对应偏移量的索引,这种方法可以避免多次调用index(before:)或index(after:)方法。
 let greeting = "Guten Tag!"
        greeting[greeting.startIndex];
        greeting[greeting.index(before: greeting.endIndex)]
        greeting[greeting.index(after: greeting.startIndex)]
        let index = greeting.index(greeting.startIndex, offsetBy: 7)
        greeting[index]
试图获取越界索引对应的Character,将引发一个运行时错误。
   greeting[greeting.endIndex]
        greeting.index(after: greeting.endIndex)
使用characters属性的indices属性会创建一个包含全部索引的范围,用来在一个字符串中访问单个字符。
   for index in greeting.characters.indices {
            print("\(greeting[index])")
        }

插入和删除

调用insert(_:at:)方法可以在一个字符串的指定索引插入一个字符,调用insert(contentsOf:at:)方法可以在一个字符串的指定索引插入一段字符串。
var welcome = "hello"
        welcome.insert("!", at: welcome.endIndex)
        welcome.insert(contentsOf: "there".characters, at: welcome.index(before: welcome.endIndex))
调用remove(at:)方法可以在一个字符串的指定索引删除一个字符,调用removeSubrange(_:)方法可以在一个字符串的指定索引删除一个子字符串。
  welcome.remove(at: welcome.index(before: welcome.endIndex))
        let range = welcome.index(welcome.endIndex, offsetBy: -6)..<welcome.endIndex
        welcome.removeSubrange(range)

取自《the swift programming language》中文版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章