很多時候我們都會遇到把漢字轉(zhuǎn)換為拼音的需求捎琐,其實(shí)iOS就提供了把漢字轉(zhuǎn)拼音的API,但是在對于多音字轉(zhuǎn)換來說,我們還是需要有一個自己的詞庫來提高我們轉(zhuǎn)換的準(zhǔn)確率叉庐,所以我就自己簡單寫了一個舒帮,PinYinSwift
(https://github.com/hlc0000/PinYinSwift)請各位大佬批評指正。
關(guān)于多音字
想要準(zhǔn)確得識別每一條語句中的多音字有兩個關(guān)鍵因素,一個是能否準(zhǔn)確得給語句進(jìn)行分詞陡叠,還有一個就是我們的詞庫的豐富程度玩郊。
關(guān)于PinYinSwift
中的一些介紹:
因?yàn)?code>PinYinSwift原來是我自己工作中所需要使用到的,然后我把它整理了之后向外部提供了幾個接口枉阵,目前功能比較當(dāng)一译红,就是單純得轉(zhuǎn)換為拼音而已,也沒有提供帶聲調(diào)的轉(zhuǎn)換或者是首字母排序等等岭妖,這些以后如果有時間我會再添加進(jìn)去临庇。
PinYinSwift
內(nèi)部的轉(zhuǎn)換方式分為兩種:
1:默認(rèn)模式:通過最大匹配方式進(jìn)行轉(zhuǎn)換,比如:
北京奧運(yùn)會
這樣一句需要轉(zhuǎn)換為拼音的語句,我的unicode_sentenceto_pinyin
這個詞庫中最長的詞是4個字
判斷 北京奧運(yùn)
是否在詞庫中昵慌,不在假夺;
判斷北京奧
是否在詞庫中,不在斋攀;
判斷 北京
是否在詞庫中已卷,在,得到bei3 jing1
淳蔼;
判斷 奧運(yùn)會
是否在詞庫中侧蘸,不在;
判斷 奧運(yùn)
是否在詞庫中鹉梨,在讳癌,得到ao4 yun4
;
判斷會
是否在詞庫中存皂,在晌坤,得到 hui4
逢艘;
2:采用系統(tǒng)分詞方式進(jìn)行轉(zhuǎn)換,比如說:
北京奧運(yùn)會
這樣的語句采用系統(tǒng)分詞可能會被分成北京/奧運(yùn)會
判斷北京
是否在詞庫中,在骤菠,得到bei3 jing1
它改;
判斷 奧運(yùn)會
是否在詞庫中,不在商乎;
判斷奧運(yùn)
是否在詞庫中央拖,在,得到ao4 yun4
鹉戚;
判斷會
是否在詞庫中鲜戒,在,得到hui4
崩瓤;
說明:采用系統(tǒng)API進(jìn)行分詞后轉(zhuǎn)換的袍啡,標(biāo)點(diǎn)符號會被丟棄
使用方法:
手動導(dǎo)入:
1、下載PinYinSwift
文件夾內(nèi)所有內(nèi)容
2却桶、將PinYinSwiftDemo
中的PinYinSwift
文件夾添加到你的工程
幾個開放接口的使用介紹:
可以直接穿入一個String
類型數(shù)據(jù)轉(zhuǎn)換為拼音,isDefaultParticiple
默認(rèn)為true
,默認(rèn)使用最大匹配算法境输,如果設(shè)置為false
,即使用系統(tǒng)API進(jìn)行分詞
static func hanyuPinyinString(content:String,
isDefaultParticiple:Bool=true)->String{}
可以傳入一個[String]
,然后內(nèi)部會循環(huán)把[String]
中的語句轉(zhuǎn)換為拼音
static func hanyuPinyinStringArray(array:Array<String>,
isDefaultParticiple:Bool=true)->[String]{}
可以傳入一個[AnyObject]
類型數(shù)據(jù),并且指定要轉(zhuǎn)換為拼音的屬性名稱,內(nèi)部會創(chuàng)建一個transformationModel
的對象颖系,并且把外部傳遞進(jìn)來的[AnyObject]
中的模型作為transformationModel
中的一個屬性
外部class
需要繼承NSObject
以及在class
前面加上@objcMembers
static func hanyuPinyinAnyArray(array:Array<AnyObject>,
propertyName:String,isDefaultParticiple:Bool=true)->[transformationModel]?{}
class transformationModel{
var pinyinName:String = ""
var model:AnyObject
init(model:AnyObject) {
self.model = model
}
}
希望各位小伙伴多多提出寶貴意見嗅剖,交流學(xué)習(xí)~