快速5中原始字符串和普通字符串之间的差异

时间:2019-03-29 07:10:40

标签: swift swift5

例如:

原始字符串

let str1 = #"The "swift 5" has abiliy to create raw strings."#

普通字符串

let str2 = "The \"swift 5\" has abiliy to create raw strings."

只有语法上的差异吗?

引入的原始字符串只是为了在双引号的情况下增加很多反斜杠

2 个答案:

答案 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.
                """#

More Detail