之前一直想弄个汉字转化工具,一直没能实现,今天发现原来早就可以实现了,先给各位推荐下这个库:

这两个提供这是微软亚洲汉字开发中心开发的,下面是说明:

2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。下载地址是:http://www.microsoft.com/downloads/details.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn 该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。

  1. East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。
  2. Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。
  3. Japanese Text Alignment Library - 支持日文特有的一种对齐格式。
  4. Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控件的示例。
  5. Korean Auto Complete TextBox Control - 支持韩文输入法的智能感知和输入自动完成的文本框控件。
  6. Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。
  7. Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支持简繁体中文之间的转换。该组件还包含一个Visual Studio集成开发环境中的插件(Add-in)支持简繁体中文资源文件之间的转换。

下载完毕后,进行解压,里面有7个msi文件,其中:CHSPinYinConv.msi就是汉字拼音相关的,CHTCHSConv.msi是进行简体与繁体进行相互转换的,值安装这2个msi即可。安装完毕后,需要在VS里添加引用,分别引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool下的dll即可使用。

--------------------------------------------------------------------------------------------------------------------------

调用这个就实现了标题的所有功能,代码如下(我提供了下注释,本来一般不写注释的):

using System; using System.Windows.Forms; using Microsoft.International.Converters.PinYinConverter; using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter; using System.Collections.ObjectModel;

namespace ChineseWordDeal {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();         }

/// <summary>         ///依次获取汉字笔画, http://hi.baidu.com/jiang_yy_jiang/ 2010-5-12 22:14         /// </summary>         /// <param name="sender"></param>         /// <param name="e"></param>         private void button2_Click(object sender, EventArgs e)         {             textBox3.Clear();             int L = GetChars().Length;             string Res = "";             for (int i = 0; i < L; i++)             {                 char C = GetChars()[i];                 //判断是不是有效的汉字                 if (ChineseChar.IsValidChar(C))                 {                     //笔画数依次输出                     Res += ChineseChar.GetStrokeNumber(C).ToString() + ",";                 }                 else                 {                     //非有效的汉字则输出?号                     Res += ("?,");                 }             }             Res = Res.Substring(0, Res.Length - 1);             textBox3.Text = Res;         }

//获取汉字对应的拼音,不是读音         private void button1_Click(object sender, EventArgs e)         {             textBox2.Clear();             int L = GetChars().Length;             string Res = "";             for (int i = 0; i < L; i++)             {                 char C = GetChars()[i];

if (ChineseChar.IsValidChar(C))                 {                     ChineseChar CC = new ChineseChar(C);                     //返回单个汉字拼音的所有集合,包括不同读音                     ReadOnlyCollection<string> roc = CC.Pinyins;                     //只获取第一个拼音                     string Py = CC.Pinyins[0];                     //去掉后面的数字,只截取拼音                     Res += Py.Substring(0, Py.Length - 1) + ",";                 }                 //不是汉字返回问号                 else { Res += "?,"; }             }             //去掉最后一个逗号             Res = Res.Substring(0, Res.Length - 1);             textBox2.Text = Res;         }         //计算有效的汉字数量         private void textBox1_TextChanged(object sender, EventArgs e)         {

label4.Text = "";             int L = GetChars().Length;             int k = 0;             for (int i = 0; i < L; i++)             {                 char C = GetChars()[i];

if (ChineseChar.IsValidChar(C))                 {                     k++;                 }             }             label4.Text = "当前汉字个数:" + k.ToString();

}         //将文本字符串转化为字符数组输出         public char[] GetChars()         {             char[] Cs = textBox1.Text.Trim().ToCharArray();             return Cs;         }

//获取汉字拼音列表,所有的 。处理同汉字拼音         private void button3_Click(object sender, EventArgs e)         {             richTextBox1.Clear();             int L = GetChars().Length;             string Res = "";             for (int i = 0; i < L; i++)             {                 char C = GetChars()[i];

if (ChineseChar.IsValidChar(C))                 {                     ChineseChar CC = new ChineseChar(C);                     ReadOnlyCollection<string> roc = CC.Pinyins;                     string R0 = "";                     foreach (string s in roc)                     {                         R0 += (s + " ");                     }                     R0 = R0.Substring(0, R0.Length - 1) + "\n";                     Res += C + ":" + R0;

}                 else { Res += "?" + "\n"; }             }             Res = Res.Substring(0, Res.Length - 1);             richTextBox1.Text = Res;         }

//获取汉字对应的繁体         private void button4_Click(object sender, EventArgs e)         {             textBox4.Clear();             String simText = textBox1.Text.Trim();             String traText = ChineseConverter.Convert(simText, ChineseConversionDirection.SimplifiedToTraditional);             textBox4.Text = traText;

}     } }

效果如下:

不过:有几个方面主要注意:

  1. 不清楚这个工具参照的是哪个汉字标准,SDK上也没有看到说明,“孟”这个字在字典中并不是多音字;
  2. 拼音后面的1,2,3,4,5猜测应当是声调标记:阴平,阳平,上声,去声,轻声。具体是否是有待查证;

下面是Microsoft.International.Converters.PinYinConverter.ChineseChar类的成员:

封装了简体中文的读音和笔画等基本信息。

成员类型 成员 描述

ChineseCharNew(Char)

ChineseChar类的构造函数。

ChineseCharacter

获取这个汉字字符。

CompareStrokeNumber(Char)

将给出的字符和实例字符的笔画数进行比较。

静态成员 GetCharCount(Int16)

检索具有指定笔画数的字符个数。

静态成员 GetChars(String)

获取给定拼音的所有同音字。

静态成员 GetChars(Int16)

检索具有指定笔画数的所有字符串。

静态成员 GetHomophoneCount(String)

检索具有指定拼音的字符数。

静态成员 GetStrokeNumber(Char)

检索指定字符的笔画数。

HasSound(String)

识别字符是否有指定的读音。

IsHomophone(Char)

识别给出的字符是否是实例字符的同音字。

静态成员 IsHomophone(Char, Char)

识别给出的两个字符是否是同音字。

IsPolyphone

获取这个字符是否是多音字。

静态成员 IsValidChar(Char)

识别给出的字符串是否是一个有效的汉字字符。

静态成员 IsValidPinyin(String)

识别给出的拼音是否是一个有效的拼音字符串。

静态成员 IsValidStrokeNumber(Int16)

识别给出的笔画数是否是一个有效的笔画数。

PinyinCount

获取这个字符的拼音个数。

Pinyins

获取这个字符的拼音。

StrokeNumber

获取这个字符的笔画数。

其他信息请参与随机安装的chm帮助文件。

C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )相关推荐

  1. C# 同间字查询 (汉字转拼音 拼音转汉字 简体繁体互转 )

    之前一直想弄个汉字转化工具,一直没能实现,今天发现原来早就可以实现了,先给各位推荐下这个库: 这两个提供这是微软亚洲汉字开发中心开发的,下面是说明: 2009年3月31日,微软发布了 Microsof ...

  2. C# 汉字转拼音 拼音转汉字 简体繁体互转

    下载完毕后,进行解压,里面有7个msi文件,其中:CHSPinYinConv.msi就是汉字拼音相关的,CHTCHSConv.msi是进行简体与繁体进行相互转换的,值安装这2个msi即可.安装完毕后, ...

  3. 无组件的ASP汉字简体繁体互转换函数

    我们开发ASP的程序员,经常遇到客户有开发繁体网站的需要,但是建设两个网站一个是麻烦,第二个是客户不愿意更新不便,所以要求能自动GB2312和BIG5转化的ASP函数,如果您需要请联系我.     简 ...

  4. 汉字转拼音 - 输入汉字获取其拼音

    转载自: http://www.cnblogs.com/LonelyShadow/p/3543798.html 前不久看到有的朋友实现对商品名称拼音的录入,发现他的实现方式是手动输入的,-_-#.同志 ...

  5. .net 汉字转拼音 - 输入汉字获取其拼音

    首先,去微软官网下载Microsoft Visual Studio International Pack语言包,下载地址分别如下: Microsoft Visual Studio Internatio ...

  6. 类似qq的汉字拼音首字查询

    一个demo,大概思路是这样:用Properties的load()来加载一个固定格式的文本文件注1,然后直接当Hashtable用. package org.navyblue.tests; impor ...

  7. java 根据拼音查询汉字_java根据拼音搜索,但数据库为汉字的解决方案

    [Java] 纯文本查看 复制代码**1.以下代码是一个文字转拼音的工具类** import org.springframework.stereotype.Component; import net. ...

  8. 使用多线程查询百万条用户数据将汉字转化成拼音

    现在有一个需求:用户表里面有将近200万条数据,查询时需要按用户名字的汉语拼音按从a-z排序.有两种解决方案:1.查询时使用数据库自带的CONVERT()函数进行转化,按拼音首字母排序;2.新加一个拼 ...

  9. mysql 查询汉字的全拼音以及查询各个汉字的拼音首字母

    查询汉字的全拼音 -- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` (`pin_yin_` varchar(255) CHARACTE ...

最新文章

  1. 如何调用AngularJS指令中定义的方法?
  2. 【前端开发系列】—— 利用选择器添加内容
  3. Lync前端服务器的卸载
  4. 面试题 17.14. 最小K个数
  5. java排序算法大全_各种排序算法的分析及java实现
  6. React开发(160):onref使用
  7. linux一些基本知识
  8. 视频教程-初级学习ArcGIS Engine视频课程-C#
  9. [CS61b] Git设置、问题及解决方式
  10. matlab二极管怎么跟IGBT相连,Simulink的扩展模块库SimPowerSystems
  11. 【IEEE】IEEE论文从投稿到发表全流程案例说明
  12. Java-getter和setter
  13. tidb-tso与标准时间相互转换
  14. 中国历年GDP数据地理可视化绘制
  15. Office for Mac 2021 正式版发布,版本 16.53
  16. 基于国产龙芯 CPU 的气井工业网关研究与设计(二)
  17. 智慧校园有什么亮点?
  18. vue实现下拉框可以输入又下拉菜单
  19. SpringBoot——快速整合EasyExcel实现Excel的上传下载
  20. Pentaho源代码阅读报告

热门文章

  1. 一代盘神谢幕!百度网盘 Pandownload 开发者被抓了!
  2. windy定义了一种windy数,不含前导零且前两个数字只差至少为2的正整数被称为windy数,求A和B之间windy数的个数
  3. EOF和feof()区别
  4. ORA-01653: 表 xxx 无法通过 (在表空间 xxx 中) 扩展
  5. Android(小米miui)如何判断当前应用是否允许NFC权限
  6. 用for循环语句改写程序,写五行笑脸“今天很开心:)
  7. 模拟器上下载Fiddler证书
  8. OpenYurt 在龙源 CNStack 云边协同项目的应用
  9. 面对对象程序设计---第一次blog
  10. TT付款方式、前TT和后TT、LC信用证+TT付款方式