MsPinYinHelper.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Text;
using System.Threading.Tasks;
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
namespace DoitPinYin.Tools
{
public class MsPinYinHelper
{
public static string PinYin(string chinese)
{
string retValue = string.Empty;
foreach (char chr in chinese)
{
try
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
string t = chineseChar.Pinyins[0].ToString();
retValue += t.Substring(0, t.Length - 1);
}
else
{
retValue += chr.ToString();
}
}
catch (Exception e)
{
Console.WriteLine("全拼转化出错!" + e.Message);
return string.Empty;
}
}
return retValue;
}
public static string FirstPinYin(string chinese)
{
string retValue = string.Empty;
foreach (char chr in chinese)
{
try
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
string t = chineseChar.Pinyins[0].ToString();
retValue += t.Substring(0, 1);
}
else
{
retValue += chr.ToString();
}
}
catch (Exception e)
{
Console.WriteLine("首字母转化出错!" + e.Message);
return string.Empty;
}
}
return retValue;
}
public static bool IsPolyphone(char chr)
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
return chineseChar.IsPolyphone;
}
else
{
return false;
}
}
public static bool IsPolyphone(string chinese)
{
if (ChineseChar.IsValidChar(chinese[0]))
{
ChineseChar chineseChar = new ChineseChar(chinese[0]);
return chineseChar.IsPolyphone;
}
else
{
return false;
}
}
public static int PinYinCount(string chinese)
{
int retCount = 0;
foreach (char chr in chinese)
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
retCount += chineseChar.PinyinCount;
}
}
return retCount;
}
public static int PinYinCount(char chr)
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
return chineseChar.PinyinCount;
}
else
{
return 0;
}
}
public static int StrokeNumber(string chinese)
{
int retCount = 0;
foreach (char chr in chinese)
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
retCount += chineseChar.StrokeNumber;
}
}
return retCount;
}
public static int StrokeNumber(char chr)
{
if (ChineseChar.IsValidChar(chr))
{
ChineseChar chineseChar = new ChineseChar(chr);
return chineseChar.StrokeNumber;
}
else
{
return 0;
}
}
public static string SimplifiedToTraditional(string simplified)
{
return ChineseConverter.Convert(simplified, ChineseConversionDirection.SimplifiedToTraditional);
}
public static string TraditionalToSimplified(string traditional)
{
return ChineseConverter.Convert(traditional, ChineseConversionDirection.TraditionalToSimplified);
}
}
}
Program.cs
using System;
using DoitPinYin.Tools;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
namespace DoitPinYin
{
class Program
{
static void Main(string[] args)
{
string testChinese = "極客神殿之熵理論";
Console.WriteLine("全拼:{0}", MsPinYinHelper.PinYin(testChinese));
Console.WriteLine("简拼:{0}", MsPinYinHelper.FirstPinYin(testChinese));
Console.WriteLine("该字符是否是多音字:{0}", MsPinYinHelper.IsPolyphone(testChinese));
Console.WriteLine("该字符拼音个数:{0}", MsPinYinHelper.PinYinCount(testChinese));
Console.WriteLine("该字符笔画:{0}", MsPinYinHelper.StrokeNumber(testChinese));
Console.WriteLine("转为繁体后是:{0}", MsPinYinHelper.SimplifiedToTraditional(testChinese));
Console.WriteLine("快樂转为简体后是:{0}", MsPinYinHelper.TraditionalToSimplified("快樂"));
Console.ReadLine();
}
}
}
如图