Swift基本语法(4)-字符串

来源:互联网 发布:jquery1.3.2.js 下载 编辑:程序博客网 时间:2024/05/21 14:51

字符串

文章原创。未经允许不得转载!写的可以给个赞,博主会发出更多关于Swift的语法和使用!

在 Swift 中绝大多数的情况下,推荐使用 String 类型

  • String 是一个结构体,性能更高
    • String 目前具有了绝大多数 NSString 的功能
    • String 支持直接遍历
  • NSString 是一个 OC 对象,性能略差
  • Swift 提供了 String 和 NSString 之间的无缝转换

字符串演练

  • 遍历字符串中的字符
for s in str.characters {    print(s)}
  • 字符串长度
let str = "hello世界"// 返回字符串转换成对应编码的字节数// 一个中文在 UTF8 字符集中占 3 个字节print(str.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))// 返回字符个数 - 字符串长度print(str.characters.count)
  • 字符串拼接
    • 直接在 "" 中使用 \(变量名) 的方式可以快速拼接字符串
let name = "老王"let age = 18let point = CGPoint(x: 100, y: 200)print("\(name) \(age) \(point)")

我和我的小伙伴再也不要考虑 stringWithFormat 了 :D

  • 可选项的拼接
    • 如果变量是可选项,拼接的结果中会有 Optional
    • 为了应对强行解包存在的风险,苹果提供了 ?? 操作符
    • ?? 操作符用于检测可选项是否为 nil
      • 如果不是 nil,使用当前值
      • 如果是 nil,使用后面的值替代
let str1 = "Hello"let str2 = "World"let i: Int? = 32str = "\(i ?? 0) 个 " + str1 + " " + str2
  • 格式化字符串
    • 在实际开发中,如果需要指定字符串格式,可以使用 String(format:...) 的方式
let h = 8let m = 23let s = 9let timeString = String(format: "%02d:%02d:%02d", arguments: [h, m, s])let timeStr = String(format: "%02d:%02d:%02d", h, m, s)

String & Range 的结合

  • 在 Swift 中,String 和 Range连用时,语法结构比较复杂
  • 如果不习惯 Swift 的语法,可以将字符串转换成 NSString 再处理
let helloString = "我们一起飞"(helloString as NSString).substringWithRange(NSMakeRange(2, 3))
  • 使用 Range 的写法
// advancedBy(正数) 向右增加索引值// advancedBy(负数) 向左减少索引值let startIndex = str.startIndex.advancedBy(1)let endIndex = str.endIndex.advancedBy(-1)let subString3 = str.substringWithRange(startIndex..<endIndex)print(subString3)
0 0
原创粉丝点击