例如:
原始字符串
let str1 = #"The "swift 5" has abiliy to create raw strings."#
普通字符串
let str2 = "The \"swift 5\" has abiliy to create raw strings."
只有语法上的差异吗?
引入的原始字符串只是为了在双引号的情况下增加很多反斜杠
答案 0 :(得分:4)
原始字符串由SE-0200引入。来自Paul Hudson's article on "How to use raw strings in Swift 5"(重点是我):
Swift 5使我们能够指定自定义字符串定界符 使用井号
#
,有时也称为井号或井号。 当您将#
与字符串一起使用时,它将影响Swift理解的方式 字符串中的特殊字符:\
不再充当转义符 字符,因此\n
的字面意思是反斜杠,然后是“ n”,而不是 换行符,\(variable)
将作为这些字符包括在内 而不是使用字符串插值。因此,这两个字符串是相同的:
let normalString = "\\Hello \\World" let rawString = #"\Hello \World"#
有关更多信息:Custom String Escaping
答案 1 :(得分:1)
来自Cosmin Pupăză's article on "What’s New in Swift 5?":
Swift 4.2使用转义序列表示反斜杠和引号 字符串中的标记:
let escape = "You use escape sequences for \"quotes\"\\\"backslashes\" in Swift 4.2." let multiline = """ You use escape sequences for \"\"\"quotes\"\"\"\\\"\"\"backslashes\"\"\" on multiple lines in Swift 4.2. """
Swift 5添加原始字符串。您在{的开头和结尾处添加
#
字符串,因此您可以使用反斜杠和引号而不会出现问题。 [SE-0200]:let raw = #"You can create "raw"\"plain" strings in Swift 5."# let multiline = #""" You can create """raw"""\"""plain""" strings on multiple lines in Swift 5. """#