字符串
- 字符串的长度
- 字符串的拼接
- 字符串的格式化
- 字符串的子串
- String是一个结构体,性能更高
- String目前具有了绝大多数NSString的功能
- String支持直接遍历
- NSString是一个OC对象,性能略差
// MARK: - 字符串的子串
func demo4() {
// 建议:一般使用 NSString作为中转,因为Swift取子串的方法一直在优化
//更容易理解
let str = "我们一起去飞"
// 1. NSString
let ocStr = str as NSString
let s1 = ocStr.substring(with: NSMakeRange(2, 3))
print(s1)
// 2.String的3.0方法 知道就好
// 偶尔使用很方便,但是复杂的截取,不好理解,而且语法经常变化
// let r = 0..<5
// str.substring(with: <#T##Range<String.Index>#>)
//Index
//startIndex position == 0
print(str.startIndex)
// endIndex postion = str.length
print(str.endIndex)
let s2 = str.substring(from: "我们".endIndex)
print(s2)
let s3 = str.substring(from: "abc".endIndex)
print(s3)
// 取子字符串的范围
guard let range = str.range(of: "一起") else {
print("没有找到字符串")
return
}
//一定找到的范围
print("------")
print(range)
print(str.substring(with: range))
}
// MARK: - 格式化
func demo3() {
let h = 8
let m = 9
let s = 6
let dateStr = "(h):(m):(s)"
print(dateStr)
// 使用格式字符串格式化
let dateStr1 = String(format: "%02d:%02d:%02d", h, m, s)
print(dateStr1)
}
//字符串的长度(3种方法)
func demo1() {
let str = "hello world你好"
// 1>返回指定编码的对应的字节数量
//URF8的编码(0~4个),每个汉字是3个字节
print(str.lengthOfBytes(using: .utf8))
// 2>字符串长度- 返回字符的个数《推荐使用》
print(str.characters.count)
// 3>使用NSString中转
/**
str as NSString
OC的写法(CZTabelCell *)[tableView dequeue
Swift 中可以使用“值 as 类型” 类型转换
*/
let ocStr = str as NSString
print(ocStr.length)
}
// MARK: -字符串的遍历
func demo() {
// NNString不支持以下方式遍历
let str: String = "hello"
for c in str.characters {
print(c)
}
}