1、 下载 CHSPinYinConv.msi软件
2、 安装软件,并记录下安装目录
3、 在项目中引用软件:默认目录为:C:\Program Files (x86)\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library如果是32位电脑,则去掉(x86)
4、 在类中引用:using Microsoft.International.Converters.PinYinConverter;
示例:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.International.Converters.PinYinConverter;//引用拼音类命名空间
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;//引用简繁类命名空间
namespace 拼音
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
rdbJF.Checked = true;
}
#region 转拼音
//转拼音按钮
private void btnConvertPY_Click(object sender, EventArgs e)
{
//获取用户输入汉字
string hanzi = tbHanZi.Text.Trim();
string pingYin = hanziConvertPingyin(hanzi);
tbPingYin.Text = pingYin;
}
//汉字转拼音
private string hanziConvertPingyin(string str)
{
string hanziPingyin = "";
int len = str.Length;
for (int i = 0; i < str.Length; i++)
{
char chr = str[i];
if (ChineseChar.IsValidChar(chr))//如果是一个有效的汉字字符
{
ChineseChar cc = new ChineseChar(chr);//声明汉字对象,包含拼音,笔画,简繁等
hanziPingyin += cc.Pinyins[0].Substring(0, cc.Pinyins[0].Length - 1) + " ";
}
else
{
hanziPingyin += str[i];
}
}
return hanziPingyin;
}
#endregion
#region 取笔画
//取笔画按钮
private void button1_Click(object sender, EventArgs e)
{
//清空结果 文本框
tbPingYin.Clear();
//获取用户输入框中的值
string str = tbHanZi.Text.Trim();
//定义字符串,用于存放获得的字符笔画
string count = "";
for (int i = 0; i < str.Length; i++)
{
count += str[i] + "-->" + GetStroke(str[i]).ToString() + "\r\n";
}
tbPingYin.Text = count;
}
//取笔画
private int GetStroke(char str)
{
int count = 0;
if (ChineseChar.IsValidChar(str))
{
ChineseChar cc = new ChineseChar(str);
count = cc.StrokeNumber;
}
return count;
}
#endregion
#region 取每个首字母
//取首音节按钮
private void button2_Click(object sender, EventArgs e)
{
//获取用户输入
string str = tbHanZi.Text.Trim();
//定义字符串用于存储首字母
string onePY = "";
for (int i = 0; i < str.Length; i++)
{
onePY += FirstYJ(str[i]) + " ";
}
tbPingYin.Text = onePY;
}
//取首音节
private string FirstYJ(char str)
{
string first = "";//用于存储首音节
if (ChineseChar.IsValidChar(str))//判断是否是有效的汉字字符
{
ChineseChar cc = new ChineseChar(str);
first = cc.Pinyins[0].Substring(0, 1);
}
return first;
}
#endregion
#region 简繁转换
//简繁转换按钮
private void button3_Click(object sender, EventArgs e)
{
//获取用户输入字符串
string getUserStr = tbHanZi.Text.Trim();
//获取是简转繁 还是 繁转简
int type = rdbJF.Checked ? 1 : rdbFJ.Checked ? 2 : 3;
//定义字符串,用于存储转换后的文字
string overStr = GetJFConvert(getUserStr,type);
tbPingYin.Text = overStr;
}
/// <summary>
/// 简繁转换
/// </summary>
/// <param name="str">要转换的字符串</param>
/// <param name="type">类型 1 简转繁 2 繁转简 3 互转</param>
/// <returns></returns>
private string GetJFConvert(string str, int type)
{
//定义字符串,用于存储转换后的字符
string OverStr = "";
switch (type)
{
case 1:
{
//简体转为繁体
OverStr = ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
} break;
case 2:
{
//繁体转为简体
OverStr = ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
} break;
case 3:
{
} break;
default:
break;
}
return OverStr;
}
#endregion
}
}
类说明:
成员类型 | 成员 | 描述 |
| 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 | 获取这个字符的笔画数。 |