Swift5中從原始文本創(chuàng)建字符串的方法
前言
從原始文本創(chuàng)建Swift字符串通常很痛苦。正確刪除原始文本中的任何引號或反斜杠字符是一種令人沮喪的練習(xí)。隨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
當(dāng)使用單個填充時,#轉(zhuǎn)義序列變?yōu)閈#:
let greeting2 = #"Hello \#(name)"# // Hello Tom
當(dāng)我們想要保留轉(zhuǎn)義的原始文本時,自定義分隔符會很有用。例如,從某些JSON創(chuàng)建String時。使用多行字符串文字似乎是一個很好的方法:
let json1 = """ { "colors": ["red","green","blue"], "label": "Insert \"title\" here" } """
當(dāng)文本包含引號時,多行字符串文字很方便,但在這種情況下會引入錯誤。問題是編譯器剝離了反斜杠,"title"導(dǎo)致一些無效的JSON:
{ "colors": ["red","green","blue"], "label": "Insert "title" here" }
如果我們使用帶有多行字符串文字的自定義分隔符,我們可以在原始文本中保留轉(zhuǎn)義序列:
let json2 = #""" { "colors": ["red","green","blue"], "label": "Insert \"title\" here" } """#
生成的String帶有保留的原始文本(請注意標(biāo)題周圍的反斜杠轉(zhuǎn)義雙引號):
{ "colors": ["red","green","blue"], "label": "Insert \"title\" here" }
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。
相關(guān)文章
Swift4.1轉(zhuǎn)場動畫實現(xiàn)側(cè)滑抽屜效果
這篇文章主要為大家詳細(xì)介紹了Swift4.1轉(zhuǎn)場動畫實現(xiàn)側(cè)滑抽屜效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Swift學(xué)習(xí)筆記之邏輯分支與循環(huán)體
這篇文章主要給大家介紹了關(guān)于Swift學(xué)習(xí)筆記之邏輯分支與循環(huán)體的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Swift使用CollectionView實現(xiàn)廣告欄滑動效果
這篇文章主要為大家詳細(xì)介紹了Swift使用CollectionView實現(xiàn)廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06Swift調(diào)用Objective-C編寫的API實例
這篇文章主要介紹了Swift調(diào)用Objective-C編寫的API實例,介紹的比較全面和詳細(xì),對Objective-C代碼的重復(fù)利用有極大好處,的朋友可以參考下2014-07-07RxSwift實現(xiàn)替換delegate的方法示例
這篇文章主要給大家介紹了關(guān)于RxSwift實現(xiàn)替換delegate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用RxSwift具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09