在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>