[C#] 超簡單簡繁轉換,中文轉拼音,拼音轉中文

2017年7月25日

最近因為在處理一些專案我必須要把繁體中文轉成拼音後再做處理,後來網路上找一下資源蠻簡單的簡單紀錄一下

image

1.  從NUGET 下載 https://www.nuget.org/packages/NPinyin/  當然你可以從Visual Studio 內建的NUGET 管理套件去下載
image

2. 之後 轉的程式碼也很簡單 就是 :

            var strs =new  string[]{ "當麻許","測試","拼音","中英文abcd交雜看看"};

            Response.Write("繁體轉換拼音:" + "<br>");
            foreach (var  s in strs)
            {
                Response.Write(NPinyin.Pinyin.GetPinyin(s)+"<br>");
            }


但是結果:
image

感覺怪怪的,我想了一下應該是library 對於繁體他無法辨認,看起來他真的是逐字去做,感謝這世界的大神給我們方便的library

3. 所以我們先將繁體中文轉成簡體中文 然後再轉成拼音試試看 ,首先下載 套件 https://www.nuget.org/packages/ChineseConverter/ ,當然你可以使用Visual Studio 內建的套件去下載

image

之後我們在轉拼音之前先轉為簡體再轉 

            Response.Write("簡體轉換拼音:" + "<br>");
            foreach (var s in strs)
            {

               var  simplifiedStr = Microsoft.International.Converters.
                      TraditionalChineseToSimplifiedConverter.
                      ChineseConverter.Convert(s
                      , Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter.ChineseConversionDirection.TraditionalToSimplified);

                Response.Write(NPinyin.Pinyin.GetPinyin(simplifiedStr) + "<br>");
                
            }


結果:
image

4. 再將拼音 轉回 中文 ,因為是拼音就跟注音一樣一個發音可能對應到很多中文,但是NPINYIN 這套件支援轉回來,但是他要一個字一個字轉不能一次送一句

C# code :

            Response.Write("簡體轉換拼音再轉回中文:" + "<br>");
            foreach (var s in strs)
            {

                var simplifiedStr = Microsoft.International.Converters.
                       TraditionalChineseToSimplifiedConverter.
                       ChineseConverter.Convert(s
                       , Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter.ChineseConversionDirection.TraditionalToSimplified);

                simplifiedStr = NPinyin.Pinyin.GetPinyin(simplifiedStr);
                var simplifiedStrs = simplifiedStr.Split(' ');

                if (simplifiedStrs != null)
                {
                   
                    foreach (var sStr in simplifiedStrs)
                    {

                        Response.Write(sStr+" : " + NPinyin.Pinyin.GetChineseText(sStr) + "<br>");
                    }
                }
            
            }


結果:
image

很簡單吧,筆記一下..


reference  : https://code.google.com/archive/p/npinyin/


當麻許的超技八 2014 | Design: no2don.