前不久看到有的朋友實現對商品名稱拼音的錄入,發現他的實現方式是手動輸入的,—_—#、同志們,福利來了!
微軟爲了開發者實現國際化語言的互轉,提供了Microsoft Visual Studio International Pack,這個擴展包裏面有中文、日文、韓文、英語等各國語言包,並提供方法實現互轉、獲取拼音、獲取字數、甚至獲取筆畫數等等。
在這裏示例講的是輸入漢字,獲取其拼音,獲取拼音和獲取拼音首字母實現效果分別以下:
首先,去微軟官網下載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項目、窗體佈局如上圖所示、ide
首先:添加剛剛安裝的語言包引用:佈局
「D:\Program Files (x86)\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\ChnCharInfo.dll」post
默認是C盤、在這裏我安裝在D盤了,而後添加using引用:this
1 using Microsoft.International.Converters.PinYinConverter;//導入拼音相關
建立獲取拼音的方法:google
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 try 12 { 13 ChineseChar chineseChar = new ChineseChar(obj); 14 string t = chineseChar.Pinyins[0].ToString(); 15 r += t.Substring(0, t.Length - 1); 16 } 17 catch 18 { 19 r += obj.ToString(); 20 } 21 } 22 return r; 23 }
建立獲取漢字拼音首字母的方法:url
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 try 12 { 13 ChineseChar chineseChar = new ChineseChar(obj); 14 string t = chineseChar.Pinyins[0].ToString(); 15 r += t.Substring(0, 1); 16 } 17 catch 18 { 19 r += obj.ToString(); 20 } 21 } 22 return r; 23 }
而後在「轉拼音」按鈕的點擊事件中調用上述方法:spa
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 }
在「轉首字母」按鈕點擊事件中調用上述方法:code
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%,運行程序,你會發現,當點擊「轉拼音」的時候,結果是這樣子的: 並非我開始說的那種「Gu Ying」的效果啊、這是由於我在獲取拼音的時候簡單的處理了一下:orm
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使用」、各類語言之間的互轉及功能示例就出來了。
【來自:LonelyShadow http://www.cnblogs.com/LonelyShadow】