zoukankan      html  css  js  c++  java
  • 汉字转拼音

    转载自: http://www.cnblogs.com/LonelyShadow/p/3543798.html

     

     

    前不久看到有的朋友实现对商品名称拼音的录入,发现他的实现方式是手动输入的,—_—#、同志们,福利来了!
     微软为了开发者实现国际化语言的互转,提供了Microsoft Visual Studio International Pack,这个扩展包里面有中文、日文、韩文、英语等各国语言包,并提供方法实现互转、获取拼音、获取字数、甚至获取笔画数等等。
     在这里示例讲的是输入汉字,获取其拼音,获取拼音和获取拼音首字母实现效果分别如下: 1.jpg   2.jpg
     首先,去微软官网下载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引用:

    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 }
    在“转首字母”按钮点击事件中调用上述方法:

     到此,已经完成了80%,运行程序,你会发现,当点击“转拼音”的时候,结果是这样子的: 3.jpg 并不是我开始说的那种“Gu Ying”的效果啊、这是因为我在获取拼音的时候简单的处理了一下:

     1 // 汉字转拼音
     2 private void btn_One_Click(object sender, EventArgs e)
     3 {
     4     string source = this.txt_ChineseCharacter_One.Text.Trim();  // 得到输入的源字符
     5 
     6     string result = string.Empty;   // 转拼音的结果
     7     string temp = string.Empty; // 下面foreach用到的临时变量
     8     foreach (char item in source)   // 遍历每个源字符
     9     {
    10         temp = GetPinyin(item.ToString());  // 将每个字符转拼音
    11         // 处理:获取首字母大写、其余字母小写
    12         result += (String.Format("{0}{1} ", temp.Substring(0, 1).ToUpper(), temp.Substring(1).ToLower()));
    13     }
    14 
    15     //string result = GetPinyin(source);  // 调用方法,获取拼音
    16     this.txt_Pinyin_One.Text = result;
    17 }
    处理拼音结果

     OK、到此、这个功能已经实现完成了,还有其余的语言包功能,和此类似,大家可以百度“Microsoft Visual Studio International Pack使用”、各种语言之间的互转及功能示例就出来了。

    【来自:LonelyShadow http://www.cnblogs.com/LonelyShadow

     
     
     

  • 相关阅读:
    SQL命令优化
    C# 实现快捷键几种方法
    实现把dgv里的数据完整的复制到一张内存表
    DataGridView上下方向键定位
    《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(2) -- 可用性
    《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能
    Solr6.7 学习笔记(01) -- 目录结构
    《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (1):大型网站发展历程
    浅淡Java多线程
    java 多线程学习笔记(二) -- IO密集型任务
  • 原文地址:https://www.cnblogs.com/qq1040991197/p/3544189.html
Copyright © 2011-2022 走看看