首先需要獲取ChnCharInfo.dll和ChineseConverter.dll
ChnCharInfo.dll官方下載操作如下:
先下載微軟Microsoft Visual Studio International Pack 1.0 SR1語言包:
Microsoft Visual Studio International Pack 1.0 SR1
Microsoft Visual Studio International Feature Pack 2.0
下載後分別是“vsintlpack1.zip”、“Vsintlpack2.msi”、雙擊“Vsintlpack2.msi”安裝完成之後解壓“vsintlpack1.zip”,獲得七個語言包。雙擊其中的“CHSPinYinConv.msi”完成安裝後就可以在Visual Studio中引用了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("漢字轉全拼結果:" + GetPinyin("測試"));
Console.WriteLine("漢字轉全拼首字母結果:" + GetFirstPinyin("測試"));
Console.WriteLine("簡體轉繁體結果:" + GetTraditionalChinese("測試"));
Console.WriteLine("繁體轉簡體結果:" + GetSimplifiedChinese("測試"));
Console.ReadLine();
}
/// <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 GetTraditionalChinese(string str)
{
if (string.IsNullOrWhiteSpace(str.Replace(" ", "")))
{
return "";
}
string result = null;
char[] CharSimples = str.ToCharArray();
for (int i = 0; i < CharSimples.Length; i++)
{
if (ChineseChar.IsValidChar(CharSimples[i]))
{
result += ChineseConverter.Convert(CharSimples[i].ToString(),
ChineseConversionDirection.SimplifiedToTraditional);
}
else
{
result += CharSimples[i].ToString();
}
}
return result;
}
/// <summary>
/// 繁體中文轉化爲簡體中文
/// </summary>
/// <param name="str">漢字</param>
/// <returns>簡體中文</returns>
public static string GetSimplifiedChinese(string str)
{
if (string.IsNullOrWhiteSpace(str.Replace(" ", "")))
{
return "";
}
string result = null;
char[] CharSimples = str.ToCharArray();
for (int i = 0; i < CharSimples.Length; i++)
{
if (ChineseChar.IsValidChar(CharSimples[i]))
{
result += ChineseConverter.Convert(CharSimples[i].ToString(),
ChineseConversionDirection.TraditionalToSimplified);
}
else
{
result += CharSimples[i].ToString();
}
}
return result;
}
}
}