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

var text:String = "This is some text
                   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"])

其他回答

另一种方法是,如果你想使用带有预定义文本的字符串变量,

var textFieldData:String = "John"
myTextField.text = NSString(format: "Hello User, \n %@",textFieldData) as String
myTextField.numberOfLines = 0

下面是一个代码片段,用n个字符分隔字符串:

//: A UIKit based Playground for presenting user interface

import UIKit
import PlaygroundSupport

class MyViewController : UIViewController {
    override func loadView() {

        let str = String(charsPerLine: 5, "Hello World!")
        print(str) // "Hello\n Worl\nd!\n"

    }
}

extension String {

    init(charsPerLine:Int, _ str:String){

        self = ""
        var idx = 0
        for char in str {
            self += "\(char)"
            idx = idx + 1
            if idx == charsPerLine {
                self += "\n"
                idx = 0
            }
        }

    }
}

正如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"])

迅速:

@connor是正确答案,但如果你想在打印语句中添加行,你要寻找的是\n和/或\r,这些被称为转义序列或转义字符,这是一个关于该主题的Apple文档链接。

例子:

print("First line\nSecond Line\rThirdLine...")

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