第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Swift中的字符串和字符比較不區(qū)分語(yǔ)言環(huán)境是什么意思?

Swift中的字符串和字符比較不區(qū)分語(yǔ)言環(huán)境是什么意思?

達(dá)令說(shuō) 2019-11-19 11:02:52
我開始學(xué)習(xí)Swift語(yǔ)言,我很好奇,這意味著Swift中的字符串和字符比較不區(qū)分語(yǔ)言環(huán)境?這是否意味著所有字符都像UTF-8字符一樣存儲(chǔ)在Swift中?
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

比較Swift字符串<與會(huì)根據(jù)所謂的“ Unicode規(guī)范化形式D”(可以通過(guò)計(jì)算 decomposedStringWithCanonicalMapping)進(jìn)行詞典上的比較


例如,分解


"?" = U+00E4 = LATIN SMALL LETTER A WITH DIAERESIS

是兩個(gè)Unicode代碼點(diǎn)的序列


U+0061,U+0308 = LATIN SMALL LETTER A + COMBINING DIAERESIS

出于演示目的,我編寫了一個(gè)小的String擴(kuò)展名,該擴(kuò)展名將String的內(nèi)容轉(zhuǎn)儲(chǔ)為Unicode代碼點(diǎn)的數(shù)組:


extension String {

    var unicodeData : String {

        return self.unicodeScalars.map {

            String(format: "%04X", $0.value)

            }.joined(separator: ",")

    }

}

現(xiàn)在,讓我們來(lái)一些字符串,用<:


let someStrings = ["?ψ", "?ψ", "?x", "?x"].sorted()

print(someStrings)

// ["a", "?", "?", "?", "?", "b"]

并將每個(gè)字符串(原始和分解形式)的Unicode代碼點(diǎn)轉(zhuǎn)儲(chǔ)到排序數(shù)組中:


for str in someStrings {

    print("\(str)  \(str.unicodeData)  \(str.decomposedStringWithCanonicalMapping.unicodeData)")

}

輸出


?x  00E4,0078  0061,0308,0078

?x  01DF,0078  0061,0308,0304,0078

?ψ  01DF,03C8  0061,0308,0304,03C8

?ψ  00E4,03C8  0061,0308,03C8

很好地顯示了比較是通過(guò)分解形式的Unicode代碼點(diǎn)的字典順序進(jìn)行的。


如以下示例所示,對(duì)于多個(gè)字符的字符串也是如此。用


let someStrings = ["?ψ", "?ψ", "?x", "?x"].sorted()

以上循環(huán)的輸出是


?x  00E4,0078  0061,0308,0078

?x  01DF,0078  0061,0308,0304,0078

?ψ  01DF,03C8  0061,0308,0304,03C8

?ψ  00E4,03C8  0061,0308,03C8

意思就是


"?x" < "?x", but "?ψ" > "?ψ"

(這至少對(duì)我來(lái)說(shuō)是出乎意料的)。


最后,讓我們將其與語(yǔ)言環(huán)境敏感的順序進(jìn)行比較,例如瑞典語(yǔ):


let locale = Locale(identifier: "sv") // svenska

var someStrings = ["?", "?", "?", "a", "?", "b"]

someStrings.sort {

    $0.compare($1, locale: locale) == .orderedAscending

}


print(someStrings)

// ["a", "?", "?", "b", "?", "?"]

如您所見(jiàn),結(jié)果與Swift <排序不同。


查看完整回答
反對(duì) 回復(fù) 2019-11-19
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

更改語(yǔ)言環(huán)境可以更改字母順序,例如,由于語(yǔ)言環(huán)境的原因,區(qū)分大小寫的比較可能會(huì)不區(qū)分大小寫,或更一般而言,兩個(gè)字符串的字母順序是不同的。


查看完整回答
反對(duì) 回復(fù) 2019-11-19
?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

詞典順序和區(qū)分區(qū)域的順序可以不同。您可以在以下問(wèn)題中看到它的一個(gè)示例:在 不更改C#順序的情況下,對(duì)等價(jià)于C#的scala列表進(jìn)行排序


在這種特定情況下,對(duì)語(yǔ)言環(huán)境敏感的順序位于_之前1,而在字典順序中則相反。


快速比較使用字典順序。


查看完整回答
反對(duì) 回復(fù) 2019-11-19
  • 3 回答
  • 0 關(guān)注
  • 602 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)