美文网首页iOS Developer
Swift 基本语法05-"String"

Swift 基本语法05-"String"

作者: 一位不愿透露姓名的王先生_ | 来源:发表于2017-05-17 22:47 被阅读1307次
    一个iOS开发初级菜鸡.png

    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))   // 输出:红庆

    相关文章

      网友评论

        本文标题:Swift 基本语法05-"String"

        本文链接:https://www.haomeiwen.com/subject/jvkrxxtx.html