转:汉字转拼音

今天看到一篇汉字转拼音的博客,感觉不错,写下来。 原文出处:http://www.cnblogs.com/LonelyShadow/p/3543798.html 微软为了开发者实现国际化语言的互转,提供了Microsoft Visual Studio International Pack,这个扩展包里面有中文、日文、韩文、英语等各国语言包,并提供方法实现互转、获取拼音、获取字数、甚至获取笔画数等等。 在这里示例讲的是输入汉字,获取其拼音,获取拼音和获取拼音首字母实现效果分别如下: 首先,去微软官网下载Microsoft Visual Studio International Pack语言包,下载地址分别如下: Microsoft Visual Studio International Pack 1.0 SR1Microsoft 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 PackSimplified Chinese Pin-Yin Conversion LibraryChnCharInfo.dll” 默认是C盘、在这里我安装在D盘了,然后添加using引用: [code lang="csharp"] using Microsoft.International.Converters.PinYinConverter;//导入拼音相关 [/code] 创建获取拼音的方法:   [code lang="chsarp"] /// <summary> /// 获取文字拼音 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string GetPinYin(string str) { StringBuilder strResult = new StringBuilder(); foreach (char item in str) { try { ChineseChar chineseChar = new ChineseChar(item); string t = chineseChar.Pinyins[0].ToString(); strResult.Append(t.Substring(0, t.Length - 1)); } catch { strResult.Append(item.ToString()); } } return strResult.ToString(); } [/code] 创建获取汉字拼音首字母的方法: [code lang="csharp"] /// <summary> /// 获取拼音首字母 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string GetFirstPinYin(string str) { StringBuilder strResult = new StringBuilder(); foreach (char obj in str) { try { ChineseChar chineseChar = new ChineseChar(obj); string t = chineseChar.Pinyins[0].ToString(); strResult.Append(t.Substring(0, 1)); } catch { strResult.Append(obj.ToString()); } } return strResult.ToString(); } [/code]   然后在“转拼音”按钮的点击事件中调用上述方法: [code lang="csharp"] private void button1_Click(object sender, EventArgs e) { string source = textBox1.Text.Trim(); string result = GetPinYin(source); textBox2.Text = result; } [/code] 在“转首字母”按钮点击事件中调用上述方法: [code lang="csharp"] private void button2_Click(object sender, EventArgs e) { string source = textBox1.Text.Trim(); string result = GetFirstPinYin(source); textBox2.Text = result; } [/code]