今天看到一篇汉字转拼音的博客,感觉不错,写下来。
原文出处:
http://www.cnblogs.com/LonelyShadow/p/3543798.html
微软为了开发者实现国际化语言的互转,提供了Microsoft Visual Studio International Pack,这个扩展包里面有中文、日文、韩文、英语等各国语言包,并提供方法实现互转、获取拼音、获取字数、甚至获取笔画数等等。
在这里示例讲的是输入汉字,获取其拼音,获取拼音和获取拼音首字母实现效果分别如下:
![2.jpg 2.jpg](http://home.bdqn.cn/data/attachment/forum/201402/11/083840bt0m5mwecitcikib.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 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]