例如:
原始字符串
let str1 = #"The "swift 5" has abiliy to create raw strings."#
普通字符串
let str2 = "The \"swift 5\" has abiliy to create raw strings."
只是语法上的差异吗?
引入的原始字符串是否仅用于在双引号的情况下添加大量反斜杠
SE-0200引入了原始字符串。来自Paul Hudson 关于“如何在 Swift 5 中使用原始字符串”的文章(强调我的):
Swift 5 让我们能够使用井号 指定自定义字符串分隔符,
#
有时也称为井号标签或井号。当您使用#
字符串时,它会影响 Swift 理解字符串中特殊字符的方式:\
不再充当转义字符,因此\n
字面意思是反斜杠,然后是“n”而不是换行符,并且\(variable)
将作为这些字符包含在内,而不是而不是使用字符串插值。所以,这两个字符串是相同的:
let normalString = "\\Hello \\World" let rawString = #"\Hello \World"#
更多信息:自定义字符串转义
摘自Cosmin Pupăză 的文章“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. """#