微软为了开发者实现国际化语言的互转,提供了Microsoft Visual Studio International Pack,这个扩展包里面有中文、日文、韩文、英语等各国语言包,并提供方法实现互转、获取拼音、获取字数、甚至获取笔画数等等。
首先,下载Microsoft Visual Studio International Pack语言包,下载地址分别如下:
vsintlpack1:http://yunpan.cn/c3G8hGdBIiaCB 访问密码 7b46
Vsintlpack2:http://yunpan.cn/c3GEgL46z6zzY 访问密码 58fe
下载后分别是“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 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 }
创建获取汉字拼音首字母的方法:
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 }
然后在“转拼音”按钮的点击事件中调用上述方法:
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 }
1 // 汉字转拼音 2 private void btn_One_Click(object sender, EventArgs e) 3 { 4 string source = this.txt_ChineseCharacter_One.Text.Trim(); // 得到输入的源字符 5 string result = string.Empty; // 转拼音的结果 6 string temp = string.Empty; // 下面foreach用到的临时变量 7 foreach (char item in source) // 遍历每个源字符 8 { 9 temp = GetPinyin(item.ToString()); // 将每个字符转拼音 10 // 处理:获取首字母大写、其余字母小写 11 result += (String.Format("{0}{1} ", temp.Substring(0, 1).ToUpper(), temp.Substring(1).ToLower())); 12 } 13 //string result = GetPinyin(source); // 调用方法,获取拼音 14 this.txt_Pinyin_One.Text = result; 15 }