Swift之字符串常用知識

Swift之字符串常用知識點

本文重點講了Swift中字符串的新特性,以及常用的知識點

字符串支持隱式多行賦值 """ """

字符串可以直接換行了,使用成對的三個雙引號來包括玖雁,注意,這樣的形式必須從第二行開始定義字符串

//incorrect
let string0 = """this is me
"""

//correct
let string0 = """
this is me
"""

//"this is me"

復制代碼

如果想要換行,直接更換一行即可朋鞍,前后想多一行換行,直接留空一行

//"this is me\n"
let string1 = """
    this is me

    """
//"\nthis is me\n"

let string2 = """

this is me

"""
復制代碼

如果使用這種寫法朝巫,不想換行怎么辦呢鸿摇,還可以使用\作為續(xù)行符,則改行不會自動換行劈猿,如:

ps拙吉;iOS開發(fā)交流技術:歡迎你的加入,不管你是大牛還是小白都歡迎入駐 揪荣,分享BAT,阿里面試題筷黔、面試經(jīng)驗,討論技術仗颈, 大家一起交流學習成長

let string4 = """

    this is me, ok, this is next \
    line
    """
復制代碼

這里的對齊邏輯還有個有意思的地方佛舱,就是第二個"""對齊的符號的其他行的空白是忽略的,什么意思呢挨决?先看下文檔中給的

image

文檔中沒有寫第二個"""请祖,這個是我寫代碼不小心對齊出錯之后發(fā)現(xiàn)的,看下例子:

"\nthis is me,\nok"

let string = """

    this is me,
    ok
    """

//這里this 和 ok 前面的空白是被忽略的

"    \n    this is me,\n    ok"
let string1 = """

    this is me,
    ok
"""

//而在string1中脖祈,this和ok的前面是有空白的肆捕,所以我推測這里的空白是根據(jù)第二個"""來對齊忽略的

復制代碼

特殊字符串

在字符串中,有很多的特殊字符盖高,Swift中也使用/來表示特殊字符慎陵,如\0(空字符)、(反斜線)喻奥、\t(水平制表符)席纽、\n(換行符)、\r(回車符)映凳、"(雙引號)胆筒、'(單引號)。

也可以直接使用unicode編碼,寫成 \u{n}(u 為小寫)仆救,其中 n 為任意一到八位十六進制數(shù)且可用的 Unicode 位碼抒和。
點擊可獲取Swift資料大全

而因為有了"""換行,所以其中的雙引號就不需要標識了彤蔽,如:

//"this is "me","
let string = """
    this is "me",
    """
復制代碼

如果希望使用特殊字符串呢摧莽? 比如我就想字符串中包含\n, 這種情況就可以使用##來包含字符串,其中的特殊字符不會被轉義

let string = #"\n"#

let string1 = "\\n"
復制代碼

使用字符串

初始化字符串

這里不再贅述顿痪,直接使用簡單初始化即可

var emptyString = ""               // 空字符串字面量
var anotherEmptyString = String()  // 初始化方法
復制代碼

修改字符串

在OC中镊辕,我們使用NSString和NSMutableString來表示是否可以修改字符串,而在Swift中蚁袭,直接使用let和var就可以識別

var variableString = "Horse"
variableString += " and carriage"
// variableString 現(xiàn)在為 "Horse and carriage"

let constantString = "Highlander"
constantString += " and another Highlander"
// 這會報告一個編譯錯誤(compile-time error) - 常量字符串不可以被修改征懈。
復制代碼

而在拼接字符串的時候,再也不用OC中痛苦地使用%@來標記揩悄,而是直接嵌入變量即可卖哎,使用()包含變量,如

let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"
// message 是 "3 times 2.5 is 7.5"
復制代碼

甚至可以直接在字符串中進行一些函數(shù)計算删性,如

print(#"6 times 7 is \#(6 * 7)."#)
// 打印 "6 times 7 is 42."
復制代碼

注意: Swift中String為值類型亏娜,當作為函數(shù)的參數(shù)傳遞時,不會被修改蹬挺,只會被copy使用

比如在OC中维贺,如果參數(shù)中傳入一個string,我們是可以在函數(shù)中修改這個string的

NSString a = "string";
[self changeString:a];

NSLog(a);//new string

- (void)changeString:(NSString *)string
{
    string = "new string";
}
復制代碼

而在Swift中巴帮,函數(shù)中是無法直接修改參數(shù)的溯泣,除非使用inout等關鍵字實現(xiàn)

var b = "b"

//error
addString(string: b)
func addString(string: String) -> Void {
        string += "aaa"
    }

//correct
addString(string: &b)
func addString(string:inout String) -> Void {
        string += "aaa"

    }

復制代碼

遍歷字符串

for character in "Dog!??" {
    print(character)
}
// D
// o
// g
// !
// ??
復制代碼

注意,Swift中字符串不僅包含上述內容晰韵,還包括諸如字符串索引发乔、子字符串、unicode等內容雪猪,我這只是挑了常用的知識進行總結

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末栏尚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子只恨,更是在濱河造成了極大的恐慌译仗,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件官觅,死亡現(xiàn)場離奇詭異纵菌,居然都是意外死亡,警方通過查閱死者的電腦和手機休涤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門咱圆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笛辟,“玉大人,你說我怎么就攤上這事序苏∈执保” “怎么了?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵忱详,是天一觀的道長围来。 經(jīng)常有香客問我,道長匈睁,這世上最難降的妖魔是什么监透? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮航唆,結果婚禮上胀蛮,老公的妹妹穿的比我還像新娘。我一直安慰自己糯钙,他們只是感情好醇滥,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著超营,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阅虫。 梳的紋絲不亂的頭發(fā)上演闭,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音颓帝,去河邊找鬼米碰。 笑死,一個胖子當著我的面吹牛购城,可吹牛的內容都是我干的吕座。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼瘪板,長吁一口氣:“原來是場噩夢啊……” “哼吴趴!你這毒婦竟也來了?” 一聲冷哼從身側響起侮攀,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤锣枝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后兰英,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撇叁,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年畦贸,在試婚紗的時候發(fā)現(xiàn)自己被綠了陨闹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖趋厉,靈堂內的尸體忽然破棺而出寨闹,到底是詐尸還是另有隱情,我是刑警寧澤觅廓,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布鼻忠,位于F島的核電站,受9級特大地震影響杈绸,放射性物質發(fā)生泄漏帖蔓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一瞳脓、第九天 我趴在偏房一處隱蔽的房頂上張望塑娇。 院中可真熱鬧,春花似錦劫侧、人聲如沸埋酬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽写妥。三九已至,卻和暖如春审姓,著一層夾襖步出監(jiān)牢的瞬間珍特,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工魔吐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扎筒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓酬姆,卻偏偏與公主長得像嗜桌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辞色,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內容

  • 1. 前言 泛型代碼讓你能根據(jù)你所定義的要求寫出可以用于任何類型的靈活的相满、可復用的函數(shù)诱篷。你可以編寫出可復用、意圖表...
    搬運工iOS橙閱讀 635評論 0 1
  • 彩排完雳灵,天已黑
    劉凱書法閱讀 4,197評論 1 3
  • 表情是什么棕所,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息悯辙。高興了當然就笑了琳省,難過就哭了迎吵。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,431評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險针贬,但是人生放棄了冒險击费,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 6,038評論 0 4