本教程属于Swift系列
字符串是编程中最受欢迎的工具之一。
在Swift中,可以使用字符串字面的语法来定义一个字符串。
let name = "Roger"
我们使用双引号。单引号不是有效的字符串定界符。
一个字符串可以横跨多行,使用3个双引号。
let description = """
a long
long
long description
"""
你可以使用字符串插值将一个表达式嵌入到一个字符串中。
let age = 8
let name = """
Roger, age \(age)
Next year he will be \(age + 1)
"""
用+ 操作符将两个字符串连接起来。
var name = "Roger"
name = name + " The Dog"
用+= 操作符将文本追加到一个字符串中。
var name = "Roger"
name += " The Dog"
或者使用append(_:) 方法。
var name = "Roger"
name.append(" The Dog")
你可以使用count 字符串属性来计算一个字符串中的字符。
let name = "Roger"
name.count //5
任何字符串都带有一组有用的方法,例如。
removeFirst()删除第一个字符removeLast()去除最后一个字符lowercased()获得一个新的字符串,小写字母uppercased()得到一个新的字符串,大写的starts(with:)如果字符串以特定的子串开始,则返回 "true"。contains()如果字符串包含一个特定的字符,则返回 "true"。
以及更多,更多。
name[1]当你需要在字符串中引用一个项目时,由于Swift中的字符串是unicode,我们不能简单地使用let name = "Roger" 中的字母o 。你需要用索引来工作。
任何字符串都会用startIndex 属性提供起始索引。
let name = "Roger"
name.startIndex //0
要计算字符串中的特定索引,你要用index(i:offsetBy:) 方法来计算它。
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name[i] //"g"
索引也可以用来获得一个子串。
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
name.suffix(from: i) //"ger"
//Or using the subscript:
name[i...] //"ger"
当你从一个字符串中得到一个子串时,结果的类型是Substring ,而不是String 。
let name = "Roger"
let i = name.index(name.startIndex, offsetBy: 2)
print(type(of: name.suffix(from: i)))
//Substring
子串的内存效率更高,因为你并没有得到一个新的字符串,而是在幕后使用相同的内存结构,尽管当你经常处理字符串的时候需要小心,因为你可以实现一些优化。
字符串是一个集合,它们可以在循环中进行迭代。