1

Swift 5 提出了一种额外的新方法来声明字符串文字,它使用#符号(在开始和结束引号之前)来声明字符串,而不用担心反斜杠引号

(参考:https ://github.com/apple/swift-evolution/blob/master/proposals/0200-raw-string-escaping.md )

例如:

let string1 = #"\ Hello World"#
print(string1) // => \ Hello World

let string2 = "Hello World #"
print(string2) // => Hello World #

let string3 = ##"#\#\ Hello World #\#\"##
print(string3) // => #\#\ Hello World #\#\

但是,当尝试使用井号来声明包含空格的字符串时,它将不起作用。让我们考虑一下选项卡:

let tabString = #"Hello World\t#"#
print(tabString) // => Hello World\t#

我的预期结果是Hello World #但不是Hello World\t#

#使用声明时如何解决此类问题?

4

1 回答 1

2

更新答案:

此时,您可以将其键入为\#t.

感谢@dan 对此发表评论。





老答案:

从逻辑上讲,结果Hello World\t\似乎是合乎逻辑的,因为#用于声明字符串的目的是“从字面上”将反斜杠处理为反斜杠,这意味着“\t”将显示为"\t"但不是" "

作为一种解决方法,您可以在这里做的是将字符串中的空格插入为不使用井号符号声明的字符串:

let tabString = #"Hello World \#("\t")#"#
print(tabString) // => Hello World     #

请记住,在#""#声明的字符串中进行插值时,应#在反斜杠 ( \#("\t")NOT \("\t")) 之后添加。

于 2019-03-27T18:38:03.547 回答