• Swift学习笔记六:字符串 String


    • String 是一个结构体,性能更高
      • 目前具有了绝大多数 NSString 的功能
      • String 支持直接遍历
     
    • NSString 是一个 OC 对象,性能更差
     
    • 遍历字符串中的字符
    var str = “Hello world"
     
    for s in str.characters
    {
        print(s)
    }
     
    • 字符串的长度
    var str = “Hello world你好"
     
    // 返回以字节为单位的字符串长度,一个中文占 3 个字节     17
    let len1 = str.lengthOfBytesUsingEncoding(using: .utf8)
     
    // 返回实际字符的个数     13
    let len2 = str.characters.count
     
    // 使用 NSString 跳转   
    // Swift 中可以使用  值 as 类型  来进行类型强转
    // Swift 中, 除 String 之外, 绝大多数使用 as 需要 ? / !
    // as! / as? 直接根据前面返回的值来决定
    // 注意: if let  /   if guard 判空语句, 一律使用 as?
    let ocStr = str as NSString
    print(ocStr.length)
     
    • 字符串的拼接:直接在 “” 中使用 (变量名) 的方式可以快速拼接字符串
    let str1 = "Hello"
    let str2 = "World"
    let i = 32
    str = "(i) 个 " + str1 + " " + str2

     
    • 可选项的拼接
      • 如果变量是可选项,拼接的结果中会有 Optional
      • 为了应对强行解包存在的风险,苹果提供了 ?? 操作符
      • ?? 操作符用于检测可选项是否为 nil
        • 如果不是 nil,使用当前值
        • 如果是 nil,使用后面的值替代
    let str1 = "Hello"
    let str2 = "World"
    let i: Int? = 32
    str = "(i ?? 0) 个 " + str1 + " " + str2

     
    • 格式化字符串
      • 在实际开发中,如果需要指定字符串格式,可以使用 String(format:...) 的方式
    let h = 8
    let m = 23
    let s = 9
    let 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 的写法 --- 字符串的子串
    // 建议:一般使用 NSString 作为中转,因为 Swift 取子串的方法一直在优化
    let str = “我们一起去飞"
     
    // 1. NSString
    let ocStr = str as NSString
    let s1 = ocStr.substring(with: NSMakeRange(2, 3))
     
    print(s1)
     
    // 2. String 的方法
    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(range)
    print(str.substring(with: range))
     
  • 相关阅读:
    弹性布局、动画、过渡
    HTML
    数据库对象
    函数
    oracle与PL/SQL安装
    网络编程
    多线程
    联调接口
    vue 全局变量
    vue ajax请求
  • 原文地址:https://www.cnblogs.com/fanxiaocong/p/6411286.html
Copyright © 2020-2023  润新知