前言
相信大家在iOS做搜索時一般會遇到通過拼音搜索關鍵字的情況,這時候我們的判斷就需要把中文漢字轉換為拼音,有些時候還需要獲取漢語拼音的首字母大寫縮寫,那么我們應該這么做呢?
有些第三方庫可以完成漢字到拼音的轉換,但是系統(tǒng)庫也可以支持拼音轉換的所以這里就簡單介紹一下使用系統(tǒng)庫進行轉換的方法。
方法如下:
增加判斷的函數(shù),最好的辦法是對String類添加一個extension,代碼如下:
extension String {}
然后第一步,是判斷字符串中有沒有中文字符:
extension String { func isIncludeChinese() -> Bool { for ch in self.unicodeScalars { // 中文字符范圍:0x4e00 ~ 0x9fff if (0x4e00 < ch.value && ch.value < 0x9fff) { return true } } return false }}
第二步,是轉換為拼音:
func transformToPinyin() -> String { let stringRef = NSMutableString(string: self) as CFMutableString // 轉換為帶音標的拼音 CFStringTransform(stringRef,nil, kCFStringTransformToLatin, false); // 去掉音標 CFStringTransform(stringRef, nil, kCFStringTransformStripCombiningMarks, false); let pinyin = stringRef as String; return pinyin}
這樣轉換出來的拼音字符串,每個漢字的拼音中間都會用空格隔開,增加去掉空格的函數(shù):
func transformToPinyinWithoutBlank() -> String { var pinyin = self.transformToPinyin() // 去掉空格 pinyin = pinyin.stringByReplacingOccurrencesOfString(" ", withString: "") return pinyin}
最后一個方法,是獲取大寫的首字母的方法:
func getPinyinHead() -> String { // 字符串轉換為首字母大寫 let pinyin = self.transformToPinyin().capitalizedString var headPinyinStr = "" // 獲取所有大寫字母 for ch in pinyin.characters { if ch <= "Z" && ch >= "A" { headPinyinStr.append(ch) } } return headPinyinStr}
希望這些方法能夠對大家有用。
總結
以上就是這篇文章的全部內容了,本文還有許多不足,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。
新聞熱點
疑難解答