1.Swift中switch基本用法
/// 1.switch 可以对任意类型的值进行分支,不在局限于整数
/// 2.switdh 一般不需要break
/// 3. switch 如果需要多值,使用“ ,”
/// 4.所有的分支至少需要一条指令,如果什么都不干,才使用break结束
func demo(num: String) {
switch num {
case "10", "9": // switch 如果需要多值,使用“ ,”
print("优秀");
case "8": // 所有的分支至少需要一条指令,如果什么都不干,才使用break结束
break
default:
print("一般")
}
}
关于 switch的特殊用法
func demo2() {
let point = CGPoint(x: 10, y: 10)
switch point {
case let p where p.x == 0 && p.y == 0:
print("原点")
case let p where p.x == 0:
print("Y轴")
case let p where p.y == 0:
print("X轴")
case let p where abs(p.x) == abs(p.y):
print("对角线")
default:
print("其他")
}
}
2.Swift中区间 CountableRange 和 CountableClosedRange
func demo3() {
for i in 0..<5 {
print(i)
}
print("------------")
for i in 0...5 {
print(i)
}
print("------------")
// CountableRange<Int>
let r1 = 0..<5 // 注意这个地方的写法 0..<5 之间没有空格
print(r1)
// CountableClosedRange<Int>
let r2 = 0...5 // // 注意这个地方的写法 0...5 之间没有空格
print(r2)
}
3. String的基本使用
- characters 的使用 ,这个方法比OC中取字符方便的多
func demo() {
let str = "洋葱数学";
for char in str.characters {
print(char)
}
}
- 获取长度
// 在返回制定编码的对应的字节数量
// UTF-8的编码,每个汉字对应3个字节
func demo3() {
let str = "洋葱数学hello"
print(str.lengthOfBytes(using: .utf8)) // 17
// 字符串长度
// 这种写法是推荐使用的
print(str.characters.count) // 9
// 使用NSString中转
// str as NSString
let ocStr = str as NSString
print(ocStr.length) // 9
}
- 字符串的拼接
func demo4() {
let name = "老王";
let age = 18
let title: String? = "CEO"
let point = CGPoint(x: 100, y: 100)
let str = "\(name) \(age) \(title ?? "") \(point)"
print(name + String(age) + (title ?? ""))
print(str)
}
- 字符串的格式化
func demo5() {
let h = 8;
let m = 10;
let s = 20;
let dateStr = "\(h):\(m):\(s)"
print(dateStr)
// 格式化字符串
let dateStr2 = String(format:"%02d:%2d:%2d", h,m,s);
print(dateStr2)
}
- String取子串以及切割
func demo6() {
// 取子串 建议使用 NSString作为中转,因为Swift去子串的方法一直在优化
// 很容易理解
let str = "洋葱数学"
let ocStr = str as NSString
let str1 = ocStr.substring(with: NSMakeRange(2, 2))
print(str1)
// String的方法
// let r = 0..<5
// str.substring(with: <#T##Range<String.Index>#>)
// str.startIndex == 0
print(str.startIndex); // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 0), _countUTF16: 1)
// str.endIndex == 4
print(str.endIndex); // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 0)
let str2 = str.substring(from: "样".endIndex); // 表示从第一个位置开始获取
print(str2) // 葱数学
let str3 = str.substring(from: "样洋葱".endIndex); // 表示从第三个位置开始获取
print(str3) // 学
print("-------------")
guard let range = str.range(of: "数学") else {
print("没有找到子串")
return
}
print(range) // Index(_base: Swift.String.UnicodeScalarView.Index(_position: 2), _countUTF16: 1)..<Index(_base: Swift.String.UnicodeScalarView.Index(_position: 4), _countUTF16: 0)
print(str.substring(with: range)) //数学
}