Swift 基本语法01-Swift简介
Swift 基本语法02-"let"和"var"
Swift 基本语法03-"if let"和"guard let"
Swift 基本语法04-"switch"和"for"
Swift 基本语法06-数组和字典
1. 字符串简介
1> String
是一个结构体,性能更高
-
String
目前具有了绝大多数NSString
的功能 -
String
支持直接遍历
2> NSString
是一个OC对象,性能略差
2. 字符串的遍历
let str = "王红庆大帅逼"
for c in str.characters {
print(c) // 输出:王,红,庆,大,帅,逼
}
3. 字符串的长度
1> 返回指定编码的对应的字节数量
let str1 = "hello world"
let str2 = "hello world你好"
print(str1.lengthOfBytes(using: .utf8)) // 输出:11
print(str2.lengthOfBytes(using: .utf8)) // 输出:17
2> 返回的字符的个数(推荐使用)
let str = "hello world你好"
print(str.lengthOfBytes(using: .utf8)) // 输出:17
// 返回字符的个数
print(str.characters.count) // 输出:13
3> 使用as
进行类型转换
let str = "hello world你好"
// 经过'as'转换后,ocStr类型变为'NSString'类型
let ocStr = str as NSString
print(ocStr.length) // 输出:13
4. 字符串的拼接
let name = "王红庆"
let age = 18
let str = "\(name)\(age)"
print(str) // 输出:王红庆18
5. 带可选项的字符串的拼接
let name = "王红庆"
let age = 18
let title: String? = "iOS开发大菜逼"
// 下面这样写会报警告:String interpolation produces a debug description for an optional value; did you mean to make this explicit?
let str = "\(name)\(age)\(title)"
/**
* 解决'警告'和输出'Optional'的办法
* 1.对'title'强行解包(这里不推荐不推荐)--->(title!)
* 2.使用'??'-------------------------->(title ?? "")
*/
let str = "\(name)\(age)\(title!)" // 输出:王红庆18iOS开发大菜逼
let str = "\(name)\(age)\(title ?? "")" // 输出:王红庆18iOS开发大菜逼
print(str) // 输出:王红庆18Optional("iOS开发大菜逼")
6. CGPoint
类型的也可以直接拼接,再也不用写NSStringFromCGPoint(point: CGPoint)
的方法了
let name = "王红庆"
let point = CGPoint(x: 100, y: 100)
let str = "\(name)\(point)"
print(str) // 输出:王红庆(100.0, 100.0)
7. 格式化字符串,相当于[NSString stringWithFormat:(NSString *)format]
let h = 8
let m = 9
let s = 7
let dateStr01 = "\(h):\(m):\(s)"
print(dateStr01) // 输出->8:9:7
let dateStr02 = String(format: "%02d:%02d:%02d", h, m, s)
print(dateStr02) // 输出->08:09:07
8. 取字符串子串
1> 建议用NSString
作为中转,因为Swift
取子串的方法一直在优化
let str = "王红庆大帅逼"
let ocStr = str as NSString
let string = ocStr.substring(with: NSMakeRange(2, 4))
print(string) // 输出:庆大帅逼(从第2个'庆'字往后取4位)
2> swift
里从第n
位取到最后一位(如果有这种需求,推荐使用这种)
let str = "王红庆大帅逼"
// '阿祖'无实际意义,仅仅是占位用的
let string = str.substring(from: "阿祖".endIndex)
print(string) // 输出:庆大帅逼
3> swift
里取希望得到的字符串(暂时不推荐,还是转成OC字符串易懂一些)
let str = "王红庆大帅逼"
guard let range = str.range(of: "红庆") else {
print("没有找到字符串") // 如果'str'字符串中没有'红庆',那么就输出:没有找到字符串
return
}
print(range)
print(str.substring(with: range)) // 输出:红庆
网友评论