程序员

Swift 4 String API的变化

2018-01-11  本文已影响254人  Lucky闪闪星

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 也有一些改变,有知道的朋友可以在下面留言讨论一下,感谢🙏.,让我们在交流中一起成长.

上一篇下一篇

猜你喜欢

热点阅读