C#汉字转拼音

2021-06-21 10:04

阅读:376

标签:ini   分享图片   字母转   中汉字   str   http   dll   bin   foreach   

下载并引入两个dll文件 NPinyin.dll 和 ChnCharInfo.dll 

  其实这两个dll 任何一个都可以实现汉字转拼音,然而 NPinyin.dll 收录的汉字并不全,但是很人性化,能识别一些常用的汉字。ChnCharInfo.dll 是微软的很全但是不人性化。另外本套代码外有一个自己维护的个别汉字文件,例如一些多音字姓氏。

  本程序的使用场景是姓名转拼音,所以先判断第一个汉字是否在自己维护的拼音库中存在,如果存在者优先使用这个库中汉字所对应的拼音,如果不存在者优先使用NPinyin库中转化拼音的方法,转化失败再使用微软提供的ChnCharInfo中转拼音的方法。

  Main函数

技术分享图片
 static void Main(string[] args)
        {
            string path = @"PinYinDic.txt";
            StreamReader sr = new StreamReader(path, Encoding.Default);
            Dictionary pinyinDic = JsonConvert.DeserializeObject>(sr.ReadToEnd());

            string name = "薄露露";
            Console.WriteLine(name+PinYinHelper.ConvertToAllSpell(name, pinyinDic).ToLower());
            Console.ReadKey();
        }
技术分享图片
PinYinHelper类
技术分享图片
public class PinYinHelper
    {
        private static Encoding gb2312 = Encoding.GetEncoding("GB2312");

        /// 
        /// 汉字转全拼
        /// 
        /// 
        /// 
        public static string ConvertToAllSpell(string strChinese, IDictionary pinyinDic = null)
        {
            try
            {
                if (strChinese.Length != 0)
                {
                    StringBuilder fullSpell = new StringBuilder();
                    for (int i = 0; i 
        /// 汉字转首字母
        /// 
        /// 
        /// 
        public static string GetFirstSpell(string strChinese)
        {
            //NPinyin.Pinyin.GetInitials(strChinese)  有Bug  洺无法识别
            //return NPinyin.Pinyin.GetInitials(strChinese);

            try
            {
                if (strChinese.Length != 0)
                {
                    StringBuilder fullSpell = new StringBuilder();
                    for (int i = 0; i 
        /// 从字典获取拼音
        /// 
        /// 字
        /// 字典
        /// 
        private static string GetFromPinYinDic(char c, IDictionary pinyinDic)
        {
            if (pinyinDic == null
                || pinyinDic.Count == 0
                || !pinyinDic.ContainsKey(c))
            {
                return "";
            }

            return pinyinDic[c];
        }
    }
技术分享图片

接下来是本程序维护的 PinYinDic.txt,该文件放在"\bin\Debug"目录下,当然也可以不使用。

技术分享图片
{
"红":"hong",
"贾":"jia",
"薄":"bo",
"褚":"chu",
"翟":"zhai",
"郇":"xun",
"盖":"ge",
"乐":"yue",
"区":"ou",
"卜":"bu",
"曾":"zeng",
"丁":"ding",
"无":"wu",
"长":"chang",
"其":"qi",
"巷":"xiang",
"将":"jiang",
"氏":"shi",
"色":"se",
"系":"xi",
"重":"chong",
"乜":"nie",
"孛":"bo",
"卒":"zu",
"单":"shan",
"解":"xie",
"仇":"qiu",
"隗":"wei",
"查":"zha",
"繁":"po",
"朴":"piao"
}
技术分享图片

 

C#汉字转拼音

标签:ini   分享图片   字母转   中汉字   str   http   dll   bin   foreach   

原文地址:https://www.cnblogs.com/soundcode/p/10239417.html


评论


亲,登录后才可以留言!