C# 汉字转拼音与汉字简繁转换

来源:互联网 发布:亲和素淘宝店 编辑:程序博客网 时间:2024/05/16 01:55

 

1、  下载 CHSPinYinConv.msi软件

地址:http://www.microsoft.com/downloads/zh-cn/confirmation.aspx?FamilyID=44cac7f0-633b-477d-aed2-99aee642fc10&DisplayLang=zh-cn

 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

获取这个字符的笔画数。