Package
Install-Package ChineseConverter
Install-Package Microsoft.International.Converters.PinYinConverter -Version 1.0.0
ChineseHelper
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
using Microsoft.International.Formatters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Helper
{
public static class ChineseHelper
{
/// <summary>
/// 获取拼音缩写
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetSpellingAbbreviations(string str)
{
List<string> list = new List<string>();
list.Add("");
string tempStr = "";
foreach (char c in str)
{
if (!ChineseChar.IsValidChar(c))
{
for (int i = 0; i < list.Count; i++)
list[i] += c.ToString().ToLower();
continue;
}
ChineseChar cc = new ChineseChar(c);
List<string> listChar = new List<string>();
if (cc.PinyinCount > 0)
{
for (int i = 0; i < cc.PinyinCount; i++)
{
listChar.Add(cc.Pinyins[i].Substring(0, 1).ToLower());
}
var listNewChar = listChar.Distinct().ToList();
if (listNewChar.Count > 1)
{
for (int i = 1; i < listNewChar.Count; i++)
{
int count = list.Count;
for (int j = 0; j < count; j++)
{
list.Add(list[j]);
}
}
}
for (int i = 0; i < listNewChar.Count; i++)
{
int count = list.Count / listNewChar.Count;
for (int j = i * count; j < list.Count; j++)
{
if (j < (i + 1) * count)
list[j] += listNewChar[i];
}
}
}
else
{
for (int i = 0; i < list.Count; i++)
list[i] += c.ToString().ToLower();
}
}
foreach (var item in list)
{
tempStr += item + ";";
}
return tempStr;
}
/// <summary>
/// 获取拼音缩写
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static List<List<string>> PinYinAbbreviation(string str)
{
List<List<string>> list = new List<List<string>>();
foreach (char c in str)
{
List<string> listChar = new List<string>();
if (ChineseChar.IsValidChar(c))
{
ChineseChar cc = new ChineseChar(c);
for (int i = 0; i < cc.PinyinCount; i++)
{
listChar.Add(cc.Pinyins[i].Substring(0,1));
}
}
else
{
listChar.Add(c.ToString());
}
list.Add(listChar);
}
return list;
}
/// <summary>
/// 获取拼音全拼
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static List<List<string>> PinYinFull(string str)
{
List<List<string>> list = new List<List<string>>();
foreach (char c in str)
{
List<string> listChar = new List<string>();
if (ChineseChar.IsValidChar(c))
{
ChineseChar cc = new ChineseChar(c);
for (int i = 0; i < cc.PinyinCount; i++)
{
listChar.Add(cc.Pinyins[i]);
}
}
else
{
listChar.Add(c.ToString());
}
list.Add(listChar);
}
return list;
}
/// <summary>
/// 获取汉字,简体转繁体
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string SimplifiedToTraditional(string str)
{
return ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
}
/// <summary>
/// 获取汉字,繁体转简体
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TraditionalToSimplified(string str)
{
return ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
}
/// <summary>
/// 将数字货币转换为大写
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static string NumericToLC(decimal number)
{
return string.Format(new EastAsiaNumericFormatter(), "{0:Lc}", number);
}
/// <summary>
/// 强数字货币转换为小写
/// </summary>
/// <param name="number"></param>
/// <returns></returns>
public static string NumericToLN(decimal number)
{
return string.Format(new EastAsiaNumericFormatter(), "{0:Ln}", number);
}
}
}
评论已关闭