之前一直想弄个汉字转化工具,一直没能实现,今天发现原来早就可以实现了,先给各位推荐下这个库chineseconverter.dll and chncharinfo.dll:
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对全球化软件应用开发的支持。
- 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>
///依次获取汉字笔画, 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;
}
}
}
效果如下:
封装了简体中文的读音和笔画等基本信息。
成员类型 | 成员 | 描述 |
---|---|---|
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帮助文件。
http://hi.baidu.com/jiang_yy_jiang/blog/item/3a94321994308676dab4bd9f.html