首先去这个地址下载类库:
这两个提供这是微软亚洲汉字开发中心开发的。2009年3月31日,微软发布了 Microsoft Visual Studio International Pack 1.0 SR1。Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。
说明
Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持。使用该类库提供的类,.NET 开发人员可以更方便的创建支持多文化多语言的软件应用。 该软件包1.0版提供下面七个组件以增强.NET Framework对全球化软件应用开发的支持。
- East Asia Numeric Formatting Library - 支持将小写的数字字符串格式化成简体中文,繁体中文,日文和韩文的大写数字字符串。
- Japanese Kana Conversion Library - 支持将日文假名(Kana)转化为另一种日文字符。
- Japanese Text Alignment Library - 支持日文特有的一种对齐格式。
- Japanese Yomi Auto-Completion Library - 类库支持感知日文输入法的输入自动完成和一个文本框控件的示例。
- Korean Auto Complete TextBox Control - 支持韩文输入法的智能感知和输入自动完成的文本框控件。
- Simplified Chinese Pin-Yin Conversion Library - 支持获取简体中文字符的常用属性比如拼音,多音字,同音字,笔画数。
- 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> ///依次获取汉字笔画 /// </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; } } }
效果如下:
不过:有几个方面主要注意:
- 不清楚这个工具参照的是哪个汉字标准,SDK上也没有看到说明,“孟”这个字在字典中并不是多音字;
- 拼音后面的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帮助文件。
喀喀喀~~ 终于将汉字该处理的问题今天全解决了~~ OK~~!!收获颇丰~~10/5/12
以上内容来自:http://hi.baidu.com/jiang_yy_jiang/blog/item/3a94321994308676dab4bd9f.html