汉字转拼音,获取汉字首字母

在一些项目中,我们可能需要使用到汉字拼音首字母.所以就出现该文章.

引入Buget Package

  • 话不多说,直接上.
  • 由于本人的封装,已经将代码变成了Nuget包
  • 所以在.Net 6 项目中直接引入 Miracle.Common
  • 由于是.Net 6 的库所以还需要使用Nuget引入 System.Text.Encoding.CodePages

如何使用

  • 引入所需Nuget包后,在项目中注册字符集
class Program
{
    static void Main(string[] args)
    {
        #region 拼音工具测试
        var test = new Test();
        /**
         * 默认情况下.Net Core只支持28951,UTF-8,UTF-16,其他的编码格式均不支持.
         * 工具库已经引用了System.Text.Encoding.CodePages.dll
         * 在启动的时候,需要注册EncodingProvider,执行代码如下:
         * Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
         */
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        test.PyToolsTest();
        #endregion
        try
        {
            //使用VSCode调试代码的时候ReadKey会抛出异常
            Console.ReadKey();
        }
        catch { }
    }
}
  • 在项目中使用
/// <summary>
/// 测试类
/// </summary>
public class Test
{
    /// <summary>
    /// output text to console by color font,default red color.
    /// </summary>
    /// <param name="ex">异常对象</param>
    /// <param name="wrap">是否换行输出</param>
    public void WriteColorText(Exception ex, ConsoleColor color = ConsoleColor.Red, bool wrap = true)
    {
        ForegroundColor = color;
        if (wrap)
            WriteLine(ex.ToString());
        else
            Write(ex.ToString());
        ForegroundColor = ConsoleColor.White;
    }
    /// <summary>
    /// output text to console by color font,default red color.
    /// </summary>
    /// <param name="ex">字符串类型</param>
    /// <param name="wrap">是否换行输出</param>
    public void WriteColorText(string ex, ConsoleColor color = ConsoleColor.Red, bool wrap = true)
    {
        ForegroundColor = color;
        if (wrap)
            WriteLine(ex);
        else
            Write(ex);
        ForegroundColor = ConsoleColor.White;
    }
    /// <summary>
    /// PyToolsTest
    /// </summary>
    public void PyToolsTest()
    {
        WriteLine();
        WriteColorText("PyToolsTest", ConsoleColor.Green);
        WriteColorText("--------------------------------------------------------------------------------------------------------------------", ConsoleColor.Yellow);
        string[] maxims = { "事常与人违,123456789", @"骏马是跑出来的,?|\!@$%^&*()_+=-,./';:{}[]<>", "深圳" };
        string[] medicines = { "聚维酮碘溶液", "开塞露", "输血记录", "深圳" };
        WriteLine("UTF8句子拼音:");
        foreach (var s in maxims)
        {
            Write("汉字:");
            WriteColorText($"{s}", ConsoleColor.DarkCyan, false);
            Write("\n拼音:");
            WriteColorText($"{PyTools.GetPinYin(s, '%')}\n", ConsoleColor.Magenta);
        }
        var GBK = Encoding.GetEncoding("GBK");
        WriteLine("GBK拼音简码:");
        WriteColorText("不支持汉字使用自定义符号'%'替代测试:", ConsoleColor.DarkYellow);
        Write("錒:\n简码:");
        WriteColorText($"{PyTools.GetInitials("錒", '%', GBK)}\n", ConsoleColor.Magenta);
        foreach (var m in medicines)
        {
            Write("药品:");
            WriteColorText($"{PyTools.ConvertEncoding(m, Encoding.UTF8, GBK)}\n", ConsoleColor.Magenta, false);
            Write("简码:");
            WriteColorText($"{ PyTools.GetInitials(PyTools.ConvertEncoding(m, Encoding.UTF8, GBK), '?', GBK)}\n", ConsoleColor.Magenta);
        }
        WriteColorText("--------------------------------------------------------------------------------------------------------------------", ConsoleColor.Yellow);
        WriteColorText("PyToolsTest Complete", ConsoleColor.Green);
        WriteLine();
    }   
}
  • 详细的接口可以参考项目源码
  • 该方法虽然支持大量汉字,但是并不是所有汉字都支持,在使用的时候还是得看实际效果.
posted @ 2019-12-10 10:28  Joe_du  阅读(1697)  评论(0编辑  收藏  举报