字符串的可变性
- var 指定的可修改
- let 指定的不可修改
-
对比 OC 的可变字符串和不可变字符串
字符串的可变性.png
字符串是值类型
- String 值在传递给方法或者函数的时候会被复制过去
- 赋值给变量或者常量的时候也一样
-
Swift 编译器优化了字符串使用的资源,实际上拷贝只会在确实需要的时候才进行
字符串赋值.png
操作字符
- for - in 循环遍历 String 中每一个独立的 Character
- Character 类型
- String 值可以通过传入 Character 数组来构造
for character in "Dog!🐶" {
print(character)
}
let catCharacters:[Character] = ["C","a","t","!","🐶"]
let catString = String(catCharacters)
print(catString)
打印结果如下:
D
o
g
!
🐶
Cat!🐶
字符串拼接
- 使用加运算符(+)创建新字符
- 使用加赋值符合(+=)在已经存在的 String 值末尾追加一个String 值
- 使用 String 类型的 append() 方法来给一个String 变量的末尾追加一个Character 值
字符串插值
- 字符串插值是一种从混合常量、变量、字面量和表达式的字符串字面量构造新 String 值的方法
- 每一个你插入到字符串字面量的元素都要被一对圆括号包裹,然后使用反斜杠前缀
- 类似于 NSString 的 stringWithFormat 方法,但是更加简便、强大
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
print(message)
打印结果如下:
3 times 2.5 is 7.5
- 可以在扩展字符串分隔符中创建一个包含在其他情况下会被当作字符串插值的字符
- 要在使用扩展分隔符的字符串中使用字符串插值,在反斜杠后使用匹配首尾井号数量的井号
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
print(#"Write an interpolated string in Swift using \(multiplier)."#)
print(#"6 times 7 is \#(6 * 7)."#)
打印结果如下:
Write an interpolated string in Swift using \(multiplier).
6 times 7 is 42.
值类型
var welcome = "hello"
var welcome1 = welcome
print(welcome == welcome1)
welcome1.append(",")
print(welcome, welcome1)
打印结果如下:
true
hello hello,
网友评论