Swift中的原始字符串

时间:2014-06-11 15:20:06

标签: string swift

Swift中是否存在函数等效的Scala的原始字符串或C#中的逐字字符串文字?

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

val secretKey = """long\^578arandom&61~8791escaped&*^%@(chars"""

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

应该在Swift 5中实现,请参见SE-0200 – Support Raw Text。在文档中:

您可以使用一个或多个#字符填充字符串文字:

#"She said, "This is dialog!""#
// Equivalent to "She said, \"This is dialog!\""
#"A \"quote"."#
// Backslash interpreted as an extra character.

当前预期的Swift 5发布日期:“ Early 2019”。

答案 2 :(得分:1)

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

在原始字符串中使用#代替常规的swift反斜杠。

let val = 1
let result = #"The answer is \#(val)."#
//The answer is 1

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

let str = ##"I am happy bla#blablabla"##
//"I am happy bla#blablabla"

原始字符串对正则表达式很有帮助,正则表达式定义中的反斜杠要少一些。例如:

let regex_Prev = "\\\\[A-Z]+[A-Za-z]+\\.[a-z]+"

现在我们可以写:

let regex_Swift5version = #"\\[A-Z]+[A-Za-z]+\.[a-z]+"#