视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
ASP.NET汉字转拼音 - 输入汉字获取其拼音的具体实现
2020-11-27 22:39:13 责编:小采
文档


前不久看到有的朋友实现对商品名称拼音的录入,发现他的实现方式是手动输入的,—_—#、同志们,福利来了!

微软为了开发者实现国际化语言的互转,提供了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使用”、各种语言之间的互转及功能示例就出来了。

下载本文
显示全文
专题