Swift5中從原始文本創(chuàng)建字符串的方法
前言
從原始文本創(chuàng)建Swift字符串通常很痛苦。正確刪除原始文本中的任何引號或反斜杠字符是一種令人沮喪的練習。隨Xcode 10.2一起發(fā)布的Swift 5引入了一種新的語法,使其更容易使用原始文本。
使用字符串文字創(chuàng)建字符串
從文本文本創(chuàng)建字符串時,使用雙引號(")作為起始和結(jié)束分隔符,使用反斜杠(\)來轉(zhuǎn)義特殊字符。例如,要創(chuàng)建一個保留此文本中雙引號的String:
let title1 = "Insert \"title\" here" // Insert "title" here
自定義字符串轉(zhuǎn)義(Swift 5)
在Swift 5中,SE-0200允許您自定義分隔符和轉(zhuǎn)義序列。在處理可能包含分隔符或轉(zhuǎn)義序列的原始文本時,這非常有用。
您可以使用一個或多個“ #”字符填充開始,結(jié)束和轉(zhuǎn)義分隔符。這三個例子都產(chǎn)生了相同的結(jié)果:
let title2 = #"Insert "title" here"# let title3 = ##"Insert "title" here"## let title4 = ###"Insert "title" here"### // Insert "title" here
請注意,我們現(xiàn)在不需要轉(zhuǎn)義雙引號,因為它們不再是分隔符。如果我們的原始文本包含我們選擇的分隔符,我們可以使用額外的“ #” 填充:
// raw text is "#Hello#" // start delimiter is ##" // end delimiter is "## let regex1 = ##""#Hello#""## // "#Hello#"
如果我們用一個或多個分隔符填充分隔符#,我們還需要填充反斜杠轉(zhuǎn)義序列。例如,在插值時:
let name = "Tom" let greeting1 = "Hello \(name)" // Hello Tom
當使用單個填充時,#轉(zhuǎn)義序列變?yōu)閈#:
let greeting2 = #"Hello \#(name)"# // Hello Tom
當我們想要保留轉(zhuǎn)義的原始文本時,自定義分隔符會很有用。例如,從某些JSON創(chuàng)建String時。使用多行字符串文字似乎是一個很好的方法:
let json1 = """ { "colors": ["red","green","blue"], "label": "Insert \"title\" here" } """
當文本包含引號時,多行字符串文字很方便,但在這種情況下會引入錯誤。問題是編譯器剝離了反斜杠,"title"導致一些無效的JSON:
{ "colors": ["red","green","blue"], "label": "Insert "title" here" }
如果我們使用帶有多行字符串文字的自定義分隔符,我們可以在原始文本中保留轉(zhuǎn)義序列:
let json2 = #""" { "colors": ["red","green","blue"], "label": "Insert \"title\" here" } """#
生成的String帶有保留的原始文本(請注意標題周圍的反斜杠轉(zhuǎn)義雙引號):
{ "colors": ["red","green","blue"], "label": "Insert \"title\" here" }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。
您可能感興趣的文章
- 01-11swift中defer幾個簡單的使用場景詳解
- 01-11Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
- 01-11Swift中初始化init的方法小結(jié)
- 01-11Swift中定義單例的方法實例
- 01-11Swift中排序算法的簡單取舍詳解
- 01-11Swift如何為設置中心添加常用功能
- 01-11Swift 4.0中如何引用3.0的第三方庫
- 01-11Swift 4中一些實用的數(shù)組技巧小結(jié)
- 01-11Swift開發(fā)應用中如何更方便地使用顏色詳解
- 01-11swift中利用runtime交換方法的實現(xiàn)示例


閱讀排行
本欄相關(guān)
- 01-11Swift利用Decodable解析JSON的一個小問題
- 01-11swift中defer幾個簡單的使用場景詳解
- 01-11Swift中初始化init的方法小結(jié)
- 01-11Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
- 01-11Swift利用純代碼實現(xiàn)時鐘效果實例代碼
- 01-11Swift中定義單例的方法實例
- 01-11Swift中排序算法的簡單取舍詳解
- 01-11Swift Json實例詳細解析
- 01-11Swift如何為設置中心添加常用功能
- 01-11Swift利用指紋識別或面部識別為應用添
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-10delphi制作wav文件的方法
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結(jié)
- 04-02jquery與jsp,用jquery