Swift学习笔记-String
2018-10-16 本文已影响3人
土豆吞噬者
在Swift中,String由字符构成,而字符由一个或多个Unicode标量构成
遍历字符串字符
var str="秋天到了123"
for c in str{
print("'\(c)'")
}
判断字符串是否为空
var str="秋天到了123"
print(str.isEmpty)
获取字符串中字符数量
var str="秋天到了123"
print(str.count)//7
print(str.utf8.count)//utf8编码,15
print(str.utf16.count)//7
获取字符串子串
注意,swift中不支持以整数索引的方式获取字符
var str="秋天到了123"
//获取第3个字符的索引
let index1=str.index(str.startIndex, offsetBy: 2)
//获取倒数第3个字符的索引
let index2=str.index(str.endIndex, offsetBy: -3)
//全部字符串
print(str[...])//秋天到了123
//首个字符
print(str[str.startIndex])//秋
//最后一个字符
print(str[str.index(before: str.endIndex)])//3
//指定位置字符
print(str[index1])//到
//从起始到index1的子串
print(str[...index1])//秋天到
print(str.prefix(through: index1))//秋天到
//从起始到index1的子串,不包括index1
print(str[..<index1])//秋天
print(str.prefix(upTo: index1))//秋天
//从index1到结尾的子串
print(str[index1...])//到了123
print(str.suffix(from: index1))//到了123
//从index1到index2的子串
print(str[index1...index2])//到了1
//从index1到index2的子串,不包括index2
print(str[index1..<index2])//到了
十六进制表示Unicode标量
str="\u{0031}"//1
组合标量
两个Unicode标量可以组合成一个字符
str="\u{0061}\u{0301}"
print(str)//á
print(str.count)//1
遍历Unicode标量
str="123"
for scalar in str.unicodeScalars{
print("\(scalar.value)")
}
//49 50 51
标准等价
有时候两个字符串的Unicode标量虽然不一样,但是可以表示为相同字符,在swift中这两个字符串相等
var str1="\u{0061}\u{0301}"
var str2="\u{00e1}"
print(str1==str2)//true