字符串比較

? ? Swift提供了3種方式去比較文本值:比較字符串和字符相等,比較前綴相等搭伤,比較后綴相等。

比較字符串和字符相等

????比較字符串和字符相等可以使用相等運(yùn)算符(==)和不相等運(yùn)算符(!=):

????????let quotation = "We're a lot alike, you and I."? ??

????????let sameQuotation = "We're a lot alike, you and I."

????????if quotation == sameQuotation {

? ? ????????print("These two strings are considered equal")

????????}

????????// 打印 "These two strings are considered equal

? ? 2個(gè)字符串或者2個(gè)字符,如果它們的字形集是按照一定規(guī)則相等的,就可以認(rèn)為它們是相等的阳谍。字形集是按照一定規(guī)則相等是指它們有一樣的語(yǔ)言意義和外觀,即使它們其實(shí)由不同的Unicode標(biāo)量組成螃概。

? ? 比如標(biāo)量LATIN SMALL LETTER E WITH ACUTE (U+00E9)LATIN SMALL LETTER E (U+0065)加上COMBINING ACUTE ACCENT (U+0301)就可以被認(rèn)為是一定定義上相等的矫夯。它們的字形集都可以表示字符é,所以它們被認(rèn)為是一定規(guī)則上的相等吊洼。如下:

? ??????// ?LATIN SMALL LETTER E WITH ACUTE

????????let eAcuteQuestion = "Voulez-vous un caf\u{E9}?" ?//?Voulez-vous un café?

????????// using LATIN SMALL LETTER E and COMBINING ACUTE ACCENT

????????let combinedEAcuteQuestion = "Voulez-vous un caf\u{65}\u{301}?" //Voulez-vous un café?

????????if eAcuteQuestion == combinedEAcuteQuestion {

????????? ? print("These two strings are considered equal")

????????}

????????// 打印 "These two strings are considered equal”

? ? 相反的训貌,英語(yǔ)國(guó)家使用的LATIN CAPITAL LETTER A (U+0041, or "A")和俄語(yǔ)國(guó)家使用的CYRILLIC CAPITAL LETTER A (U+0410, or "А")就被認(rèn)為是不相等的。這2個(gè)字符看起來(lái)很像冒窍,但是它們的語(yǔ)意是不一樣的:

? ??????let latinCapitalLetterA: Character = "\u{41}"

????????let cyrillicCapitalLetterA: Character = "\u{0410}"

????????if latinCapitalLetterA != cyrillicCapitalLetterA {

????????? ? print("These two characters are not equivalent.")

????????}

????????// 打印 "These two characters are not equivalent.”

NOTE:Swift中的字符串和子符的比較不是地點(diǎn)敏感的递沪。

前綴相等和后綴相等

? ? 判斷字符串是不是有特定的前綴或者后綴豺鼻,可以使用方法hasPrefix(_:)hasSuffix(_:)。2個(gè)方法的入?yún)⒍际且粋€(gè)字符串区拳,然后返回布爾值拘领。

? ? 下面的例子中是一個(gè)包含了字符串的數(shù)組,里面是莎士比亞的羅密歐和朱麗葉的前兩個(gè)場(chǎng)景:

? ??????????let romeoAndJuliet = [

????????? ? "Act 1 Scene 1: Verona, A public place",

????????? ? "Act 1 Scene 2: Capulet's mansion",

????????? ? "Act 1 Scene 3: A room in Capulet's mansion",

????????? ? "Act 1 Scene 4: A street outside Capulet's mansion",

????????? ? "Act 1 Scene 5: The Great Hall in Capulet's mansion",

????????? ? "Act 2 Scene 1: Outside Capulet's mansion",

????????? ? "Act 2 Scene 2: Capulet's orchard",

????????? ? "Act 2 Scene 3: Outside Friar Lawrence's cell",

????????? ? "Act 2 Scene 4: A street in Verona",

????????? ? "Act 2 Scene 5: Capulet's mansion",

????????? ? "Act 2 Scene 6: Friar Lawrence's cell"

????????]

可以使用方法hasPrefix(_:)計(jì)算出數(shù)組romeoAndJuliet中第一個(gè)場(chǎng)景的數(shù)量:

? ??????var act1SceneCount = 0

????????for scene in romeoAndJuliet {

????????? ? if scene.hasPrefix("Act 1 ") {

? ? ? ? ????????act1SceneCount += 1

????????? ? }

????????}

????????print("There are \(act1SceneCount) scenes in Act 1")

????????// 打印 "There are 5 scenes in Act 1”

????相似的樱调,也開(kāi)始使用方法hasSuffix(_:)計(jì)算出發(fā)生在Capulet’s mansion和Friar Lawrence’s cel的場(chǎng)景:????

? ??????var mansionCount = 0

????????var cellCount = 0

????????for scene in romeoAndJuliet {

????????? ? if scene.hasSuffix("Capulet's mansion") {

????????? ? ? ? mansionCount += 1

????????? ? } else if scene.hasSuffix("Friar Lawrence's cell") {

? ? ? ? ????????cellCount += 1

????????? ? }

????????}

????????print("\(mansionCount) mansion scenes; \(cellCount) cell scenes")

????????// Prints "6 mansion scenes; 2 cell scenes”

NOTE:方法hasPrefix(_:)和hasSuffix(_:)對(duì)每一個(gè)字符串的字形集按照上面提的一定規(guī)則得相等進(jìn)行逐字比較。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末届良,一起剝皮案震驚了整個(gè)濱河市笆凌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌士葫,老刑警劉巖乞而,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異慢显,居然都是意外死亡爪模,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門荚藻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屋灌,“玉大人,你說(shuō)我怎么就攤上這事应狱」补” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵疾呻,是天一觀的道長(zhǎng)除嘹。 經(jīng)常有香客問(wèn)我,道長(zhǎng)岸蜗,這世上最難降的妖魔是什么尉咕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮璃岳,結(jié)果婚禮上年缎,老公的妹妹穿的比我還像新娘。我一直安慰自己矾睦,他們只是感情好晦款,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著枚冗,像睡著了一般缓溅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赁温,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天坛怪,我揣著相機(jī)與錄音淤齐,去河邊找鬼。 笑死袜匿,一個(gè)胖子當(dāng)著我的面吹牛更啄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播居灯,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼祭务,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了怪嫌?” 一聲冷哼從身側(cè)響起义锥,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岩灭,沒(méi)想到半個(gè)月后拌倍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡噪径,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年柱恤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片找爱。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡梗顺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缴允,到底是詐尸還是另有隱情荚守,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布练般,位于F島的核電站矗漾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏薄料。R本人自食惡果不足惜敞贡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摄职。 院中可真熱鬧誊役,春花似錦、人聲如沸谷市。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迫悠。三九已至鹏漆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艺玲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工括蝠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人饭聚。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓忌警,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親秒梳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子法绵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容