汉字转拼音,获取汉字首字母
在一些项目中,我们可能需要使用到汉字拼音首字母.所以就出现该文章.
引入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();
}
}
- 详细的接口可以参考项目源码
- 该方法虽然支持大量汉字,但是并不是所有汉字都支持,在使用的时候还是得看实际效果.