ASP.NET汉字转拼音 - 输入汉字获取其拼音的具体实现
前不久看到有的朋友实现对商品名称拼音的录入,发现他的实现方式是手动输入的,—_—#、同志们,福利来了!
微软为了开发者实现国际化语言的互转,提供了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项目、窗体布局如上图所示、
首先:添加刚刚安装的语言包引用:
“d:\program files (x86)\microsoft visual studio international pack\simplified chinese pin-yin conversion library\chncharinfo.dll”
默认是c盘、在这里我安装在d盘了,然后添加using引用:
using microsoft.international.converters.pinyinconverter;//导入拼音相关
创建获取拼音的方法:
/// <summary>
/// 汉字转化为拼音
/// </summary>
/// <param name="str">汉字</param>
/// <returns>全拼</returns>
public static string getpinyin(string str)
{
string r = string.empty;
foreach (char obj in str)
{
try
{
chinesechar chinesechar = new chinesechar(obj);
string t = chinesechar.pinyins[0].tostring();
r += t.substring(0, t.length - 1);
}
catch
{
r += obj.tostring();
}
}
return r;
}
创建获取汉字拼音首字母的方法:
/// <summary>
/// 汉字转化为拼音首字母
/// </summary>
/// <param name="str">汉字</param>
/// <returns>首字母</returns>
public static string getfirstpinyin(string str)
{
string r = string.empty;
foreach (char obj in str)
{
try
{
chinesechar chinesechar = new chinesechar(obj);
string t = chinesechar.pinyins[0].tostring();
r += t.substring(0, 1);
}
catch
{
r += obj.tostring();
}
}
return r;
}
然后在“转拼音”按钮的点击事件中调用上述方法:
// 汉字转拼音
private void btn_one_click(object sender, eventargs e)
{
string source = this.txt_chinesecharacter_one.text.trim(); // 得到输入的源字符
string result = getpinyin(source); // 调用方法,获取拼音
this.txt_pinyin_one.text = result;
}
在“转首字母”按钮点击事件中调用上述方法:
// 转首字母
private void btn_two_click(object sender, eventargs e)
{
string source = this.txt_chinesecharacter_one.text.trim(); // 得到输入的源字符
string result = getfirstpinyin(source); // 调用方法,获取拼音
this.txt_pinyin_one.text = result;
}
到此,已经完成了80%,运行程序,你会发现,当点击“转拼音”的时候,结果是这样子的:
并不是我开始说的那种“gu ying”的效果啊、这是因为我在获取拼音的时候简单的处理了一下:
// 汉字转拼音
private void btn_one_click(object sender, eventargs e)
{
string source = this.txt_chinesecharacter_one.text.trim(); // 得到输入的源字符
string result = string.empty; // 转拼音的结果
string temp = string.empty; // 下面foreach用到的临时变量
foreach (char item in source) // 遍历每个源字符
{
temp = getpinyin(item.tostring()); // 将每个字符转拼音
// 处理:获取首字母大写、其余字母小写
result += (string.format("{0}{1} ", temp.substring(0, 1).toupper(), temp.substring(1).tolower()));
}
//string result = getpinyin(source); // 调用方法,获取拼音
this.txt_pinyin_one.text = result;
}
ok、到此、这个功能已经实现完成了,还有其余的语言包功能,和此类似,大家可以百度“microsoft visual studio international pack使用”、各种语言之间的互转及功能示例就出来了。
上一篇: MySQL中使用load data命令实现数据导入的方法
下一篇: .Net消息队列的使用方法