• C# 汉字转拼音


    安装相关依赖:NPinyin

             Microsoft.International.Converters.PinYinConverter

    直接从vs里面的nuget管理器搜索下载即可。

        public class PinYinHelper
        {
            private static Encoding gb2312 = Encoding.GetEncoding("GB2312");
    
            /// <summary>
            /// 汉字转全拼
            /// </summary>
            public static string ConvertToAllSpell(string strChinese, IDictionary<char, string> pinyinDic = null)
            {
                try
                {
                    if (strChinese.Length != 0)
                    {
                        var fullSpell = new StringBuilder();
                        for (var i = 0; i < strChinese.Length; i++)
                        {
                            var chr = strChinese[i];
                            var pinyin = GetSpell(chr);
                            fullSpell.Append(pinyin);
                        }
    
                        return fullSpell.ToString().ToLower();
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("全拼转化出错!" + e.Message);
                }
    
                return string.Empty;
            }
    
            /// <summary>
            /// 汉字转首字母
            /// </summary>
            /// <param name="strChinese"></param>
            /// <returns></returns>
            public static string GetFirstSpell(string strChinese)
            {
                //NPinyin.Pinyin.GetInitials(strChinese)  有Bug  洺无法识别
                //return NPinyin.Pinyin.GetInitials(strChinese);
    
                try
                {
                    if (strChinese.Length != 0)
                    {
                        var fullSpell = new StringBuilder();
                        for (var i = 0; i < strChinese.Length; i++)
                        {
                            var chr = strChinese[i];
                            fullSpell.Append(GetSpell(chr)[0]);
                        }
    
                        return fullSpell.ToString().ToLower();
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("首字母转化出错!" + e.Message);
                }
    
                return string.Empty;
            }
    
            private static string GetSpell(char chr)
            {
                var coverchr = NPinyin.Pinyin.GetPinyin(chr);
                var isChineses = ChineseChar.IsValidChar(coverchr[0]);
                if (isChineses)
                {
                    var chineseChar = new ChineseChar(coverchr[0]);
                    foreach (var value in chineseChar.Pinyins)
                    {
                        if (!string.IsNullOrEmpty(value))
                        {
                            return value.Remove(value.Length - 1, 1);
                        }
                    }
                }
    
                return coverchr;
    
            }
    
            /// <summary>
            /// 从字典获取拼音
            /// </summary>
            /// <param name="c"></param>
            /// <param name="pinyinDic">字典</param>
            /// <returns></returns>
            private static string GetFromPinYinDic(char c, IDictionary<char, string> pinyinDic)
            {
                if (pinyinDic == null
                    || pinyinDic.Count == 0
                    || !pinyinDic.ContainsKey(c))
                {
                    return "";
                }
    
                return pinyinDic[c];
            }
        }
  • 相关阅读:
    这样设计是否更好些~仓储接口是否应该设计成基础操作接口和扩展操作接口
    爱上MVC3~MVC+ZTree实现对树的CURD及拖拽操作
    Android自定义图形,图形的拼接、叠加、相容
    CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
    修改MyEclipse内存-------OutOfMemoryError错误
    MySQL中MySQL X.X Command Line Client一闪而过的问题
    C++组合问题
    Android编程之仿微信显示更多文字的View
    理解MapReduce哲学
    mysql 备份
  • 原文地址:https://www.cnblogs.com/dawenyang/p/11304179.html
Copyright © 2020-2023  润新知