1.大小 pinyin最小了,POAPinyin的聲明就快500行了.
2.速度 其實三者差不多,但是不要用POAPinyin原生的那個convert,那個每次都遍歷查找很慢.
3.對比 pinyin只能取得漢字對應拼音的首字母,PYMethod原本是應用於股票查詢的,它的拼音個數少於POAPinyin.
對於這個漢字"嗯",我拼音輸入法是"en"打出來的,PYMethod得到的是EN,但是POAPinyin得到的是NG,百度百科也讀NG.....
4.原理
pinyin是把unicode中漢字部分的首字母全部提取到數組,取得時候 拼音數組[漢字的unicode值-unicode中起始漢字值]就直接得到了.
PYMethod是把unicode轉成GBK,然後根據GBK高低位兩個值確定對應拼音的位置得到拼音
POAPinyin是把所有拼音與之對應的漢字組成一個表,到時候往這個表裡查詢(原生convert方法)
改進的quickConvert方法是先得到一個漢字unicode值的上下限,然後轉換上面的表成 unicode--拼音 這樣的表,查詢的時候就是哈希查找,更快,要是這個unicode不連續就會有很大的問題了(這個表裡面果然缺了字:"?g?i?k仍?????????????x?z?{????佘????|愣扔?Y楞特????????????????????釀???铽").這個函數還會跳過一些非ascii符號.另一個方法stringConvert修復了非ascii碼這個問題.使用的時候最好把上面提到的字加進表裡.
demo