我怎么能在多行分割字符串,如下面?
var text:String = "This is some text
over multiple lines"
我怎么能在多行分割字符串,如下面?
var text:String = "This is some text
over multiple lines"
当前回答
从Swift 4.0开始,可以使用多行字符串,但有一些规则:
你需要用三个双引号"""来开始和结束字符串。 你的字符串内容应该从它自己的行开始。 结尾的"""也应该在自己的行上开始。
除此之外,你就可以开始了!这里有一个例子:
let longString = """
When you write a string that spans multiple
lines make sure you start its content on a
line all of its own, and end it with three
quotes also on a line of their own.
Multi-line strings also let you write "quote marks"
freely inside your strings, which is great!
"""
查看Swift 4的新功能以获得更多信息。
其他回答
加上@Connor的回答,也需要有\n。以下是修改后的代码:
var text:String = "This is some text \n" +
"over multiple lines"
正如litso所指出的,在一个表达式中重复使用+-操作符会导致Xcode Beta挂起(刚刚用Xcode 6 Beta 5检查过):Xcode 6 Beta无法编译
目前,多行字符串的另一种替代方法是使用一个字符串数组,并将其压缩为+:
var text = ["This is some text ",
"over multiple lines"].reduce("", +)
或者,可以更简单地使用join:
var text = "".join(["This is some text ",
"over multiple lines"])
我尝试了几种方法,但找到了一个更好的解决方案: 只需使用“文本视图”元素。它的文本自动显示多行! 找到这里:UITextField多行
样本
var yourString = "first line \n second line \n third line"
以防您发现+运算符不合适
下面是一个简单的实现(Swift 5.4+),使用resultBuilder来清理语法!
@resultBuilder
public struct StringBuilder {
public static func buildBlock(_ components: String...) -> String {
return components.reduce("", +)
}
}
public extension String {
init(@StringBuilder _ builder: () -> String) {
self.init(builder())
}
}
用法:
String {
"Hello "
"world!"
}
// "Hello world!"