国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

漢字轉拼音

2019-11-17 03:22:03
字體:
來源:轉載
供稿:網友

漢字轉拼音 - 輸入漢字獲取其拼音

前不久看到有的朋友實現對商品名稱拼音的錄入,發現他的實現方式是手動輸入的,—_—#、同志們,福利來了!

 本文剛發布時,只寫了一個實現方式,使用的是微軟的語言包,但是對多音字的效果不怎么理想,甚至個別字會出現很詭異的錯誤,因此,現在擴展另一個方法,手動實現。

方式一、使用微軟語言包 微軟為了開發者實現國際化語言的互轉,提供了Microsoft Visual Studio International Pack,這個擴展包里面有中文、日文、韓文、英語等各國語言包,并提供方法實現互轉、獲取拼音、獲取字數、甚至獲取筆畫數等等。

 [這種方式對多音字的效果不怎么理想,但是,這個方法比較簡單,直接導入包就可以了,因此,對于那些只需要個別語句進行處理的或者不注重多音字的,可以使用這種方式,畢竟簡便嘛。] 在這里示例講的是輸入漢字,獲取其拼音,獲取拼音和獲取拼音首字母實現效果分別如下:1.jpg 2.jpg 首先,去微軟官網下載Microsoft Visual Studio International Pack語言包,下載地址分別如下:Microsoft Visual Studio International Pack 1.0 SR1、Microsoft Visual Studio International Feature Pack 2.0 下載后分別是“vsintlpack1.zip”、“Vsintlpack2.msi”、雙擊“Vsintlpack2.msi”安裝、路徑隨意、但是要記得、因為一會要引用的、 安裝“Vsintlpack2.msi”之后、解壓“vsintlpack1.zip”、里面包含七個語言包、 例如中文轉拼音“CHSPinYinConv.msi”、簡體繁體互轉“CHTCHSConv.msi”等等。。 在這里我們用到的是“CHSPinYinConv.msi”、雙擊安裝成功后、打開Visual Studio、新建一個WinForm項目、窗體布局如上圖所示、

首先:添加剛剛安裝的語言包引用:

“D:/PRogram Files (x86)/Microsoft Visual Studio International Pack/Simplified Chinese Pin-Yin Conversion Library/ChnCharInfo.dll”

默認是C盤、在這里我安裝在D盤了,然后添加using引用:

1 using Microsoft.International.Converters.PinYinConverter;//導入拼音相關

 創建獲取拼音的方法:

 1 /// <summary>  2 /// 漢字轉化為拼音 3 /// </summary>  4 /// <param name="str">漢字</param>  5 /// <returns>全拼</returns>  6 public static string GetPinyin(string str) 7 { 8     string r = string.Empty; 9     foreach (char obj in str)10     {11         try12         {13             ChineseChar chineseChar = new ChineseChar(obj);14             string t = chineseChar.Pinyins[0].ToString();15             r += t.Substring(0, t.Length - 1);16         }17         catch18         {19             r += obj.ToString();20         }21     }22     return r;23 }
漢字轉化為拼音

 創建獲取漢字拼音首字母的方法:

 1 /// <summary>  2 /// 漢字轉化為拼音首字母 3 /// </summary>  4 /// <param name="str">漢字</param>  5 /// <returns>首字母</returns>  6 public static string GetFirstPinyin(string str) 7 { 8     string r = string.Empty; 9     foreach (char obj in str)10     {11         try12         {13             ChineseChar chineseChar = new ChineseChar(obj);14             string t = chineseChar.Pinyins[0].ToString();15             r += t.Substring(0, 1);16         }17         catch18         {19             r += obj.ToString();20         }21     }22     return r;23 }
漢字轉化為拼音首字母

 然后在“轉拼音”按鈕的點擊事件中調用上述方法:

1 // 漢字轉拼音2 private void btn_One_Click(object sender, EventArgs e)3 {4     string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字符5     string result = GetPinyin(source);  // 調用方法,獲取拼音6     this.txt_Pinyin_One.Text = result;7 }
然后在“轉拼音”按鈕的點擊事件中調用上述方法

 在“轉首字母”按鈕點擊事件中調用上述方法:

1 // 轉首字母2 private void btn_Two_Click(object sender, EventArgs e)3 {4     string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字符5     string result = GetFirstPinyin(source);  // 調用方法,獲取拼音6     this.txt_Pinyin_One.Text = result;7 }
在“轉首字母”按鈕點擊事件中調用上述方法:

 到此,已經完成了80%,運行程序,你會發現,當點擊“轉拼音”的時候,結果是這樣子的:3.jpg并不是我開始說的那種“Gu Ying”的效果啊、這是因為我在獲取拼音的時候簡單的處理了一下:

 1 // 漢字轉拼音 2 private void btn_One_Click(object sender, EventArgs e) 3 { 4     string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到輸入的源字符 5  6     string result = string.Empty;   // 轉拼音的結果 7     string temp = string.Empty; // 下面foreach用到的臨時變量 8     foreach (char item in source)   // 遍歷每個源字符 9     {10         temp = GetPinyin(item.ToString());  // 將每個字符轉拼音11         // 處理:獲取首字母大寫、其余字母小寫12         result += (String.Format("{0}{1} ", temp.Substring(0, 1).ToUpper(), temp.Substring(1).ToLower()));13     }14 15     //string result = GetPinyin(source);  // 調用方法,獲取拼音16     this.txt_Pinyin_One.Text = result;17 }
處理拼音結果

 OK、到此、這個功能已經實現完成了,還有其余的語言包功能,和此類似,大家可以百度“Microsoft Visual Studio International Pack使用”、各種語言之間的互轉及功能示例就出來了。

方式二、手動編碼實現

 這種方式其實也不困難,說白了就是根據Unicode編碼值,定義對應的拼音數組或集合,然后實現此效果。

首先定義拼音區編碼數組:

 1 //定義拼音區編碼數組 2 private static int[] getValue = new int[] 3     { 4         -20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036, 5         -20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763, 6         -19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515, 7         -19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249, 8         -19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006, 9         -19003,-18996,-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735,10         -18731,-18722,-18710,-18697,-18696,-18526,-18518,-18501,-18490,-18478,-18463,-18448,11         -18447,-18446,-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183, -18181,-18012,12         -17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752,13         -17733,-17730,-17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482,14         -17468,-17454,-17433,-17427,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南靖县| 年辖:市辖区| 同江市| 静乐县| 东阳市| 五大连池市| 永顺县| 绥中县| 淳安县| 随州市| 临城县| 沁源县| 中山市| 济阳县| 桦川县| 靖远县| 苍溪县| 明水县| 乌鲁木齐市| 蒙阴县| 巴林左旗| 逊克县| 巫溪县| 光泽县| 双鸭山市| 裕民县| 正蓝旗| 砀山县| 饶河县| 兴和县| 塘沽区| 张掖市| 西乡县| 思南县| 平果县| 新乡县| 淮滨县| 丹棱县| 龙陵县| 峨眉山市| 交城县|