swift利用系統(tǒng)庫(kù)漢字轉(zhuǎn)換為拼音

在iOS中我們做搜索時(shí)一般會(huì)遇到通過(guò)拼音搜索關(guān)鍵字的情況,這時(shí)候我們的判斷就需要把中文漢字轉(zhuǎn)換為拼音,有些時(shí)候還需要獲取漢語(yǔ)拼音的首字母大寫(xiě)縮寫(xiě),那么我們應(yīng)該這么做呢?

有些第三方庫(kù)可以完成漢字到拼音的轉(zhuǎn)換,但是系統(tǒng)庫(kù)也可以支持拼音轉(zhuǎn)換的所以這里就簡(jiǎn)單介紹一下使用系統(tǒng)庫(kù)進(jìn)行轉(zhuǎn)換的方法。

增加判斷的函數(shù),最好的辦法是對(duì)String類(lèi)添加一個(gè)extension,代碼如下:

extension String {}

然后第一步,是判斷字符串中有沒(méi)有中文字符:

extension String {
    func isIncludeChinese() -> Bool {
        for ch in self.unicodeScalars {
            // 中文字符范圍:0x4e00 ~ 0x9fff
            if (0x4e00 < ch.value  && ch.value < 0x9fff) {
                return true
            }
        }
        return false
    }
}

第二步,是轉(zhuǎn)換為拼音:

func transformToPinyin() -> String {
    let stringRef = NSMutableString(string: self) as CFMutableString
    // 轉(zhuǎn)換為帶音標(biāo)的拼音
    CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false);
    // 去掉音標(biāo)
    CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false);
    let pinyin = stringRef as String;

    return pinyin
}

這樣轉(zhuǎn)換出來(lái)的拼音字符串,每個(gè)漢字的拼音中間都會(huì)用空格隔開(kāi),增加去掉空格的函數(shù):

func transformToPinyinWithoutBlank() -> String {
    var pinyin = self.transformToPinyin()
    // 去掉空格
    pinyin = pinyin.stringByReplacingOccurrencesOfString(" ", withString: "")
    return pinyin
}

最后一個(gè)方法,是獲取大寫(xiě)的首字母的方法:

func getPinyinHead() -> String {
    // 字符串轉(zhuǎn)換為首字母大寫(xiě)
    let pinyin = self.transformToPinyin().capitalizedString
    var headPinyinStr = ""

    // 獲取所有大寫(xiě)字母
    for ch in pinyin.characters {
        if ch <= "Z" && ch >= "A" {
            headPinyinStr.append(ch)
        }
    }
    return headPinyinStr
}

希望這些方法能夠?qū)Υ蠹矣杏谩?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近一段日子,高壓下的忙碌,日子窮到吃土,以及深度地自我懷疑。自己所做出的這一系列決定到底是不是正確?是...
    金時(shí)金日閱讀 282評(píng)論 0 1
  • 向上抬頭說(shuō)不定就有驚喜 時(shí)間一晃已是半個(gè)月的光陰,慢慢也找到了自己的生活節(jié)奏,昨天晚上站在圖書(shū)館二樓的大廳...
    小名就叫寧皖呀閱讀 444評(píng)論 0 0
  • 今天,我的家鄉(xiāng)那里下雪了… 關(guān)于鄭州我知道的不多,為了愛(ài)情曾經(jīng)去過(guò)那里 多少次在火車(chē)上路過(guò)這城市,一個(gè)人悄悄地想起...
    我今年22歲閱讀 655評(píng)論 1 2
  • 摘自《程序員面試金典》
    zhenjiechen閱讀 438評(píng)論 0 0
  • 我站在 孤寂隱秘的角落茫茫然,顛簸的追尋著運(yùn)命中的悅樂(lè)疲倦不堪的青春徬徨的日日夜夜躑躅的漂漂泊泊愁怨的重重疊疊侵入...
    哮汪天涯閱讀 319評(píng)論 0 0

友情鏈接更多精彩內(nèi)容