首頁  >  文章  >  後端開發  >  C#漢字轉拼音(支援多音字)

C#漢字轉拼音(支援多音字)

黄舟
黄舟原創
2017-02-06 16:46:282504瀏覽

之前由於專案需要,中間需要一個漢字轉拼音和首拼的功能來做查詢,感覺這種功能基本上已經成熟化了,於是查找了相關的代碼,首先引入眼簾的是下面兩篇文章

C#漢字轉拼音(支援GB2312字符集中所有漢字)(http://www.cnblogs.com/cxd4321/p/4203383.html)

【乾貨】JS版漢字與拼音互轉終極方案,附簡單的JS拼音輸入法(http://www.cnblogs.com/liuxianan/p/pinyinjs.html)

感謝兩位博主,寫的比較全也很詳細,都有提供源碼,大家可以參考下。

由於考慮到接口的需要,於是參考了 第一篇,文章中作者的源碼基本能滿足漢字轉拼音的需要,對於其他特殊的字符,也可以在進行添加補充,不足之處就是不支持多音字,由於需要支援多音字的查詢,所以後面有查了下其他的文章,發現還沒有現成的文章(也可能本人的搜尋等級比較水)。

後來找到發現對於漢字轉拼音,原來微軟已經提供了 Microsoft Visual Studio International Pack ,而且很強大。於是試了一下

首先在nuget引用對應的包

 查找 PinYinConverter

C#漢字轉拼音(支援多音字)

簡單的demo

小試用如下:

C#漢字轉拼音(支援多音字)我們可以看到, 行 的多音字有 hang,heng,xing 三個,這裡連音標也出來了,確實很方便。而我需要的功能是輸入 銀行 ,然後轉換為拼音是 yinhang,yinheng,yinxing,  首拼是 yh,yx。有ChineseChar 這個類的話做起來思路就簡單了。

漢字轉拼音類封裝

1.首先將輸入的漢字拆分

2.接著每個漢字用ChineseChar 獲取多個拼音

3.然後除去數字,去重,提取首字符,再在進行組合就好了

於是寫了個幫助類進行裝換,代碼如下:

string ch = Console.ReadLine();
ChineseChar cc = new ChineseChar(ch[0]);
var pinyins = cc.Pinyins.ToList();
pinyins.ForEach(Console.WriteLine);

結果:

C#漢字轉拼音(支援多音字)目前試過一些生僻字都是能支持,對於一些太偏的還沒試過,不過對於一般漢字轉拼音的,多音字支持這裡就已經足夠了。


這裡僅是使用了 Microsoft Visual Studio International Pack 這個擴充包裡面的漢字轉拼音功能,其實裡面還有中文、日文、韓文、英文等各國語言包,並提供方法實現互轉、獲、取得字數、甚至取得筆畫數等等強大的功能,有興趣的朋友可以自行查詢下它的api。


源碼分享


分享是一種美德,有時牛逼的文章可以提高我們的技術層面,但有時候更多的需求是業務層面,很多小知識應用的分享卻可以幫我們提高業務層面的問題。只要分享的知識點有用,不誤人子弟,就算大小都是一種學習,所以也希望大家能勇於分享。

位址:https://github.com/qq1206676756/PinYinParse

以上就是C#漢字轉拼音(支援多音字)的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn