前言
從原始文字建立swift字串通常很痛苦。正確刪除原始文字中的任何引號或反斜槓字元是一種令人沮喪的練習。隨xcode 10.2一起發布的swift 5引入了一種新的語法,使其更容易使用原始文字。
使用字串文字建立字串
從文字文字建立字串時,使用雙引號(")作為起始和結束分隔符,使用反斜槓(\)來轉義特殊字元。例如,要建立乙個保留此文字中雙引號的string:
let title1 = "insert \"title\" here"
// insert "title" here
自定義字串轉義(swift 5)
在swift 5中,se允許您自定義分隔符和轉義序列。在處理可能包含分隔符或轉義序列的原始文字時,這非常有用。
您可以使用乙個或多個「 #」字元填充開始,結束和轉義分隔符。這三個例子都產生了相同的結果:
let title2 = #"insert "title" here"#
let title3 = ##"insert "title" here"##
let title4 程式設計客棧= ###"insert "title" here"###
// insert "title" here
請注意,我們現在不需要轉義雙引號,因為它們不再是分隔符。如果我們的原始文字包含我們選擇的分隔符,我們可以使用額外的「 #」 填充:
// raw text is "#hello#"
// start delimiter is ##"
// end delimiter is "##
let regex1 = ##""#hello#""##
// "#hello#"
如果我們用乙個或多個分隔符填充分隔符#,我們還需要填充反斜槓轉義序列。例如,在插值時:
let name = "tom"
let greeting1 = "hello \(name)" // hello tom
當使用單個填充時,#轉義序列變為\#:
let greeting2 = #"hello \#(name)"# // hello tom
當我們想要保留轉義的原始文字時,自定義分隔符會很有用。例如,從某些json建立string時。使用多行字串文字似乎是乙個很好的方法:
let json1 = """
"""當文字包含引號時,多行字串文字很方便,但在這種情況下會引入錯誤。問題是編譯器剝離了反斜槓,"title"導致一些無效的json:
如果我們使用帶有多行字串文字的自定義分隔符,我們可以在原始文字中保留轉義序列:
let json2 = #"""
"""#
生成的string帶有保留的原始文字(請注意標題周圍的反斜槓轉義雙引號):
總結本文標題: swift5中從原始文字建立字串的方法
本文位址:
Swift中根據字串建立物件
動態獲取命名空間 cfbundleexecutable這個鍵對應的值就是專案名稱,也就是命名空間 let namespace nsbundle.mainbundle infodictionary cfbundleexecutable as string 將字串轉化為類 預設情況下,命名空間就是專案名...
5 從字串中取數
描述 編寫getdoublefromstring函式,該函式可以不斷從字串中取出正浮點數或整數,無數可取,則返回值小於0 include include using namespace std double getdoublefromstring char str int main return 0...
iOS中通過字串建立類 Swift
開發中可能會經常遇到動態建立類的情況,有時候是根據伺服器返回的字段進行處理,在oc中很簡單,直接通過nsclassfromstring方法即可,但是在swift中,要加上命名空間才能夠建立,具體如下 1 命名空間的獲取,這個要動態獲取或者直接寫死,直接寫死的話,如果改了專案名字的話就不能用了,所以最...