周遊。
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))
}