字符串就是一系列字符
在swift中,Sring类型桥接到OC的NSString类,不需要做格式转换就可以访问所有NSString的方法。不同的是String在swift中本质是结构体,而OC中NSString是对象。
一、声明字符串
量声明
let str1 = "hello" // 不可变字符串
var str2 = "world" // 可变字符串
var str3 = "" // 空字符串
var str4 = String() // 空字符串
// swift中多行字符串,用的是""" ..................""", 多行字符串可以使用单引号和双引号,必须要用 \ 转义字符
swift中字符串结构体,或者是一种值类型,因此
let rst = str2 + str2 // 结果是 "hello world". 这样做字符串拼接真的比OC省事很多
二、字符串操作
1 .遍历 字符串中的字符
for char in "hello" {
print(char)
// 依次打印出 h - e - l - l - o
2. 用Character 类型 初始化字符串
let chars: [Character] = ["h", "e", "l", "l", "o"]
let charsStr = String(chars) // charsStr 结果为: hello
3 字符串拼接
let str1 = "hello"
var str2 = "world" // 可变字符串
let rst = str2 + str2 // 结果是 "hello world". 这样做字符串拼接真的比OC省事很多
4 插入
let myInt = 4
let myStr = "\(myInt) -----------Double(myInt) * 1.1" // 结果: 4 -----------4.4
注意:作为插值写在()中的表达式不能包含非转义字符的"或\,并且不能包办回车或者换行符。
5. 统计
mystr = "message"
let cnt = mystr.count // 与OC中length 差不多
6. 字符串访问
索引(下标)访问:每个String类型都是String.Index,他相当于每个字符在字符串中的位置
startIndex、endIndex表示字符的开始、结束位置,当字符串为空,这两个值是一样的。
还有:index(before:)、index(after:)、index(_:offsetBy:)
let greeting = "Guten Tag!"
greeting[greeting.startIndex] // G
greeting[greeting.index(before: greeting.endIndex)] // !
greeting[greeting.index(after: greeting.startIndex)] // u
let index = greeting.index(greeting.startIndex, offsetBy: 7) 9 greeting[index] // a
greeting[greeting.endIndex] // 错误,因为越界了
greeting.index(after: endIndex) // 错误, 因为越界了
// 使用:indices 可以方位字符串的每个索引
for index in greeting.indices{
print("\(greeting[index]) ", terminator: "")
}
// 输出: G u t e n T a g !
注意:这些方法在集合类型也是使用,Array、Dictionary、Set等
7、 插入、删除
要在字符串中插入值使用insert(_:at:) 或 insert(contentsOf:at:), 对应的删除方法有:remove(at:)或removeSubrange(_:)
var welcome = "hello"
welcome.insert("!", at: welcome.endIndex)
// welcome 的值 "hello!"
welcome.insert(contentsOf: " there", at: welcome.index(before 6 : welcome.endIndex))
// welcome 的值 "hello there!"
welcome.remove(at: welcome.index(before: welcome.endIndex)) // hello there
let range = welcome.index(welcome.endIndex, offsetBy: -6)..< welcome.endIndex
welcome.removeSubrange(range) // hello
8 子字符串
let greeting = "Hello, world!"
let index = greeting.index(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]
let newString = String(beginning)
9 字符串对比可以直接使用"==", 其他方法可以参考OC的NSString的方法
以什么开始:hasPrefix(_:)
以什么结束:hasSuffix(_:)