Swift 中的原始字符串

pen*_*365 6 string swift

Swift 中是否有与 Scala 的原始字符串或 C# 中的逐字字符串文字等效的功能?

没有转义字符的原始字符串示例(语法不正确):

val secretKey = """long\^578arandom&61~8791escaped&*^%@(chars"""
Run Code Online (Sandbox Code Playgroud)

我试过简单地掌握语言文档,但还没有找到功能等效的东西。

小智 7

Swift 5 现在支持原始字符串。使用此功能,反斜杠和引号被解释为它们各自的文字符号。它们不被视为原始字符串中的转义字符或字符串终止符。

要使用原始字符串,使用# 符号(与python 使用'r' 或'R' 相同)。以下是在 swift 5 中使用原始字符串的变体数量:

let myPets = #"The name of my dog is "barky" and my cat is "smily"."#
//The name of my dog is "barky" and my cat is "smily".
Run Code Online (Sandbox Code Playgroud)

原始字符串的内部 # 用于字符串插值,而不是通常的 swift 反斜杠。

let val = 1
let result = #"The answer is \#(val)."#
//The answer is 1
Run Code Online (Sandbox Code Playgroud)

如果要在原始字符串中使用 #,请将 ## 放在开头和结尾。

let str = ##"I am happy bla#blablabla"##
//"I am happy bla#blablabla"
Run Code Online (Sandbox Code Playgroud)

我猜原始字符串将有助于正则表达式,正则表达式定义中的反斜杠较少。例如:

let regex_Prev = "\\\\[A-Z]+[A-Za-z]+\\.[a-z]+"
Run Code Online (Sandbox Code Playgroud)

现在我们可以写:

let regex_Swift5version = #"\\[A-Z]+[A-Za-z]+\.[a-z]+"#
Run Code Online (Sandbox Code Playgroud)


Ant*_*ton 1

目前没有这个功能,swift是新的。在会议上,发言者鼓励我们报告您认为快速需要的任何内容。因此,我建议您报告您需要像 Scala 这样的原始字符串函数。