遍历。
func demo() {
let str: String = "abcdefg"
//NSString不支持一下方式遍历
//let str: NSString = "abcdefg"
for c in str.characters{
print(c)
}
}
字符串长度
func demo() {
let str: String = "abcd你好"
//1、返回制定编码对应的字节数量 每个汉字是三个字节 4+3+3 = 9
print(str.lengthOfBytes(using: .utf8))
//2、字符串长度 推荐使用
print(str.characters.count)
//3、使用NSString中转获取长度 as表示强转为NSString类型
let ocStr = str as NSString
print(ocStr.length)
}
拼接字符串.
func demo2() {
let name = "老王"
let age = 18
let title: String? = "BOSS"
let point = CGPoint(x: 100, y: 200)
//拼接字符串时要注意可选项,如果含可选项会输出Optional
let str = "\(name)\(age)\(title ?? "")\(point)"
print(str)
}
格式化字符串
func demo() {
let h = 8
let m = 9
let s = 6
//格式化字符串
let dataStr1 = String(format: "%02d:%02d:%02d",h,m,s)
print(dataStr1)
}
字符串的子串。
关于字符串子串这一块,强烈建议通过NSString作为中转。Swift关于子串处理一直在优化,目前非常不稳定。
func demo() {
//建议:一般使用NSString作为中转,因为Swift取子串的方法一直在优化,一直没有稳定
let str = "我是郑亚伟"
//==================方法一====================
//转为OC的NSString
let ocStr = str as NSString
let s1 = ocStr.substring(with: NSMakeRange(2, 3))
print(s1)
//==================方法二(知道即可)====================
//Swift3.0的写法
//startIndex的position == 0
print(str.startIndex)
//endIndex的position == str.length
print(str.endIndex)
//*****取子串
//这里面的“我是”和上面的我是,完全没有关系,这里主要是为了计算位置的
let s2 = str.substring(from: "我是".endIndex)
print(s2)
//****取范围 这个range是可选的,可能没有值
guard let range = str.range(of: "abc")else{
print("没有找到字符串")
return
}
//guard let之后的range一定是有值的
print(range)
print(str.substring(with: range))
}