.NET Core使用微软官方类库实现汉字简繁切换以及转拼音

用到的两个Nuget包:

  1. 用于汉字转拼音:Microsoft.International.Converters.PinYinConverter

  2. 用于汉字简繁切换:Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter

代码:

using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using System;
 
namespace 简繁切换
{
    class Program
    {
 
        static void Main(string[] args)
        {
 
            string Name = "汉昭烈帝刘备";
 
            Console.WriteLine($"{Name}\n全拼:{GetPinyin(Name)},\n首拼:{GetFirstPinyin(Name)},\n繁体字:{GetTraditional(Name)},\n简体字:{GetSimplified(GetTraditional(Name))}");
 
 
            Console.ReadKey();
        }
 
 
 
        /// <summary> 
        /// 汉字转化为拼音
        /// </summary> 
        /// <param name="str">汉字</param> 
        /// <returns>全拼</returns> 
        public static string GetPinyin(string str)
        {
            string r = string.Empty;
            foreach (char obj in str)
            {
                try
                {
                    ChineseChar chineseChar = new ChineseChar(obj);
                    string t = chineseChar.Pinyins[0].ToString();
                    r += t.Substring(0, t.Length - 1);
                }
                catch
                {
                    r += obj.ToString();
                }
            }
            return r;
        }
 
        /// <summary> 
        /// 汉字转化为拼音首字母
        /// </summary> 
        /// <param name="str">汉字</param> 
        /// <returns>首字母</returns> 
        public static string GetFirstPinyin(string str)
        {
            string r = string.Empty;
            foreach (char obj in str)
            {
                try
                {
                    ChineseChar chineseChar = new ChineseChar(obj);
                    string t = chineseChar.Pinyins[0].ToString();
                    r += t.Substring(0, 1);
                }
                catch
                {
                    r += obj.ToString();
                }
            }
            return r;
        }
 
        // <summary> 
        /// 简体转换为繁体
        /// </summary> 
        /// <param name="str">简体字</param> 
        /// <returns>繁体字</returns> 
        public static string GetTraditional(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
            return r;
        }
        /// <summary> 
        /// 繁体转换为简体
        /// </summary> 
        /// <param name="str">繁体字</param> 
        /// <returns>简体字</returns> 
        public static string GetSimplified(string str)
        {
            string r = string.Empty;
            r = ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
            return r;
        }
 
 
    }
}

输出:
在这里插入图片描述


ChineseChar类的用法

Microsoft.International.Converters.PinYinConverter 命名空间包含了拼音和笔画转换工具的类。

class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine("请输入你要转的汉字");
                string str = Console.ReadLine();
                string py = GetPinYin(str);
                Console.WriteLine(py);
            }

            //ChineseChar类的其他用法:
            //1、静态方法:
            //    ->GetCharCount(Inter16)        检索具有指定笔画数的字符个数。
            //    ->GetChars(string)                返回具有相同的指定拼音的字符串列表
            //    ->GetChars(Inter16)            返回具有指定笔画的所有汉字。
            //    ->GetHomophoneCount(string)    检索具有指定拼音的字符数。
            //    ->GetStrokeNumber(Char)        检索指定字符的笔画数。
            //    ->IsHomophone(Char, Char)        识别给出的两个字符是否是同音字。
            //    ->IsValidChar(Char)            识别给出的字符串是否是一个有效的汉字字符。
            //    ->IsValidPinyin(String)        识别给出的拼音是否是一个有效的拼音字符串。
            //    ->IsValidStrokeNumber(Int16)    识别给出的笔画数是否是一个有效的笔画数。
            //2、实例方法:
            //    ->ChineseCharNew(Char)            ChineseChar类的构造函数。
            //    ->CompareStrokeNumber(Char)    将给出的字符和实例字符的笔画数进行比较。
            //    ->HasSound(String)                识别字符是否有指定的读音。
            //    -> IsHomophone(Char)            识别给出的字符是否是实例字符的同音字。
            //3、实例属性:
            //    ->ChineseCharacter                获取这个汉字字符。
            //    ->IsPolyphone                    获取这个字符是否是多音字。
            //    ->PinyinCount                    获取这个字符的拼音个数。
            //    ->StrokeNumber                    获取这个字符的笔画数
        }
        /// <summary>
        /// 获得中文字符串的拼音
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static string GetPinYin(string str)
        {
            string py = "";

            for (int i = 0; i < str.Length; i++)
            {
                if (ChineseChar.IsValidChar(str[i]))//判断当前字符是不是汉字
                {
                    ChineseChar cc = new ChineseChar(str[i]);//构造方法
                    py += cc.Pinyins[0].TrimEnd('1', '2', '3', '4', '5').ToLower();
                }
                else//不是汉字的话 加本身
                {
                    py += str[i];
                }

            }

            return py;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值