Swift中是否存在函数等效的Scala的原始字符串或C#中的逐字字符串文字?
示例没有转义字符的原始字符串(在语法上不正确):
val secretKey = """long\^578arandom&61~8791escaped&*^%@(chars"""
我曾尝试过简单地掌握语言文档,但还没有找到功能等同的文档。
答案 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]+"#