首先是SE-0163,这是基于Swift 4 String Manifesto的一份具体修改提议,其中有些内容还在积极讨论中,但一个可确定的部分,就是继Swift 2之后,在Swift 4里,String
重新变成了一个Collection
类型。对此,官方的详细解释,在这里。
当String
变成一个集合之后,我们之前对Collection
所有的操作,就都可以直接用来处理String
了,例如:
let greeting = "Hello Mars"
// 10
greeting.count
// 5
let spaceIndex = greeting.index(of: " ")!
// Hello
let substring = greeting[..<spaceIndex]
// H
// e
// l
// ..
greeting.forEach { print($0) }
SE-0168 Multi-Line String Literals
这个改进最简单直观,我们可以用一对三个单引号(这叫做triple quotes)来包含任何行字符串内容,这样,无论字符串包含任何值(包括引号、各种空格、换行符等),都会原封不动的保留下来,当我们要向用户展示一段JSON或XML时,就显得格外方便了:
let xmlInfo = """
<?xml version="1.0"?>
<episode id="1">
<title>String is a collection again</title>
<author>11</author>
<created_at>2017-05-18</created_at>
</episode>
"""
let jsonInfo = """
{
"episode": {
"title": "String is a collection",
"author": "11",
"created_at": "2017-05-18"
}
}
"""
当我们在控制台打印这两个变量时:
print(xmlInfo)
print(jsonInfo)
可以在下图中看到,这两个字符串都完整保留了我们在定义时的格式:
![](https://img.haomeiwen.com/i1754828/d126dcfaa742ec06.png)
网友评论