Swift – 将string分成多行

我怎么能分割一个string,如下面的多行?

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

请注意,从2017年起,您只需使用三重引号即可。

Swift 4支持多行string文字 。 除了换行符之外,还可以包含未转义的引号。

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

老版本的Swift不允许你在多行上有一个单独的文字,但是你可以在多行上添加文字:

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

我在string上使用扩展来实现多行string,同时避免编译器挂起错误。 它也允许你指定一个分隔符,所以你可以像Python的连接函数一样使用它

 extension String { init(sep:String, _ lines:String...){ self = "" for (idx, item) in lines.enumerated() { self += "\(item)" if idx < lines.count-1 { self += sep } } } init(_ lines:String...){ self = "" for (idx, item) in lines.enumerated() { self += "\(item)" if idx < lines.count-1 { self += "\n" } } } } print( String( "Hello", "World!" ) ) "Hello World!" print( String(sep:", ", "Hello", "World!" ) ) "Hello, World!" 

这是我注意到的关于Swift的第一个令人失望的事情。 几乎所有的脚本语言都允许使用多行string。

C ++ 11添加了原始string文字,允许您定义自己的终止符

C#有多行string的@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" 

正如litso指出的那样,在一个expression式中重复使用+ -Operator可能会导致XCode Beta挂起(只需使用XCode 6 Beta 5进行检查): Xcode 6 Beta无法编译

现在多行string的替代方法是使用string数组并使用+ reducestring:

 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...") 

多行string可以从Swift 4.0开始,但是有一些规则:

  1. 你需要用三个双引号开始和结束你的string, """
  2. 你的string内容应该从一行开始。
  3. 终止"""也应该开始在自己的路线。

除此之外,你很好走! 这是一个例子:

 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中的新function 。

添加到@Connor的答案,还需要\ n。 这里是修改的代码:

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

下面的例子描述了一个多行的延续,使用圆括号作为Xcode 6.2 Beta的Swift bug的一个简单的解决方法,它在那里抱怨expression式太复杂而无法在合理的时间内parsing,并且考虑把它分解成更小的件:

  . . . return String(format:"\n" + (" part1: %d\n" + " part2: %d\n" + " part3: \"%@\"\n" + " part4: \"%@\"\n" + " part5: \"%@\"\n" + " part6: \"%@\"\n") + (" part7: \"%@\"\n" + " part8: \"%@\"\n" + " part9: \"%@\"\n" + " part10: \"%@\"\n" + " part12: \"%@\"\n") + " part13: %f\n" + " part14: %f\n\n", part1, part2, part3, part4, part5, part6, part7, part8, part9, part10, part11, part12, part13, part14) . . . 

Swift 4已经通过给出多行string文字支持来解决这个问题。要开始string文字,添加三个双引号(“”“)并按回车键,按下回车键后,开始用任何variables写入string,换行符和双引号就像你会用记事本或任何文本编辑器写的一样。 要结束多行string,再次在新行中写入(“”“)。

见下面的例子

  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) 

另一种方法,如果你想使用一些预定义文本的stringvariables,

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

您可以使用unicode等于input或\n并在您的string中执行它们。 例如: \u{0085}

样品

 var yourString = "first line \n second line \n third line" 

如果你没有find合适的+操作符

一种方法是将标签文本设置为“属性文本”,并更新stringvariables以包含换行符的HTML( <br /> )。

例如:

 var text:String = "This is some text<br />over multiple lines" label.attributedText = text 

输出:

 This is some text over multiple lines 

希望这可以帮助!

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