我怎么能在多行分割字符串,如下面?

var text:String = "This is some text
                   over multiple lines"

当前回答

我尝试了几种方法,但找到了一个更好的解决方案: 只需使用“文本视图”元素。它的文本自动显示多行! 找到这里:UITextField多行

其他回答

Swift 4通过提供多行字符串文字支持解决了这个问题。要开始字符串字面量,添加三个双引号(" " " ")并按回车键,按回车键后开始写带有任何变量的字符串,换行符和双引号,就像你在记事本或任何文本编辑器中写的那样。要结束多行字符串文字再次写入(" " ")在新行。

参见下面的例子

     let multiLineStringLiteral = """
    This is one of the best feature add in Swift 4
    It let’s you write “Double Quotes” without any escaping
    and new lines without need of “\n”
    """

print(multiLineStringLiteral)

下面是一个简单的实现(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!"

你可以使用unicode equals for enter或\n并在你的字符串中实现它们。例如:\u{0085}。

Swift 4支持多行字符串字面值。除了换行符,它们还可以包含未转义的引号。

var text = """
    This is some text
    over multiple lines
    """

旧版本的Swift不允许你在多行上有一个字面值,但你可以在多行上添加字面值:

var text = "This is some text\n"
         + "over multiple lines\n"

这是我注意到的斯威夫特的第一件令人失望的事情。几乎所有脚本语言都允许多行字符串。

c++ 11添加了原始字符串字面值,允许您定义自己的终止符

c#有它的@literals用于多行字符串。

即使是普通的C以及老式的c++和Objective-C也允许通过将多个文字相邻放置来进行连接,因此引号被折叠。当你这样做的时候,空格不算数,所以你可以把它们放在不同的行上(但需要添加你自己的换行符):

const char* text = "This is some text\n"
                   "over multiple lines";

由于swift不知道你已经把你的文本超过多行,我必须修复connor的样本,类似于我的C样本,显式地声明换行:

var text:String = "This is some text \n" +
                  "over multiple lines"