美文网首页程序员
Swift 4 String API的变化

Swift 4 String API的变化

作者: Lucky闪闪星 | 来源:发表于2018-01-11 22:27 被阅读254次

    String在Swift 4 的新特性深受大众喜爱(至少我是很喜欢的).
    String API 在Swift 4 中有很多的改变.
    具体改变请 参考链接.

    下面说一些主要的变化.

    直接上代码:

    let galaxy = "Milky Way 🐮"
    for char in galaxy {
      print(char)
    }
    

    Look! 不需要像Swift3 那样需要遍历galaxy.characters这个数组,直接就可以遍历每个字符,是不是很爽? Swift 4 is swifter than swift 3~ 哈哈.

    继续,

    galaxy.count       // 11
    galaxy.isEmpty     // false
    galaxy.dropFirst() // "ilky Way 🐮"
    String(galaxy.reversed()) // "🐮 yaW ykliM"
    

    从上面的代码我们可以看出,Swift4的String,具备了SequenceCollection的所有性质.

    继续,

    // Filter out any none ASCII characters
    galaxy.filter { char in
      let isASCII = char.unicodeScalars.reduce(true, { $0 && $1.isASCII })
      return isASCII
    } // "Milky Way "
    

    这个是Swift4 String过滤非ASCII码的字符的方法. 和Swift 3 不同的是,它可以直接获取StringUnicodeScalarView, 而在之前,这是很繁琐的,你需要重新创建一个String,具体请参考链接.

    // Grab a subsequence of String
    let endIndex = galaxy.index(galaxy.startIndex, offsetBy: 3)
    var milkSubstring = galaxy[galaxy.startIndex...endIndex]   // "Milk"
    type(of: milkSubstring)   // Substring.Type
    
    // Concatenate a String onto a Substring
    milkSubstring += "🥛"     // "Milk🥛"
    
    // Create a String from a Substring
    let milkString = String(milkSubstring) // "Milk🥛"
    

    上面的例子是Swift 4 的字符串Slice. 切割后的Substring和string 几乎是一样的,都遵守了StringProtocol,而StringProtocol是Swift 4 新加入的一个字符串协议.
    详情请参考官方文档.

    貌似Swift 4 对Emoji String 也有一些改变,有知道的朋友可以在下面留言讨论一下,感谢🙏.,让我们在交流中一起成长.

    相关文章

      网友评论

        本文标题:Swift 4 String API的变化

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