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
,具备了Sequence
和Collection
的所有性质.
继续,
// 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 不同的是,它可以直接获取String
的 UnicodeScalarView
, 而在之前,这是很繁琐的,你需要重新创建一个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 也有一些改变,有知道的朋友可以在下面留言讨论一下,感谢🙏.,让我们在交流中一起成长.