昨天經過網友提醒,提取漢字拼音的方法可以使用微軟的一個類庫 Visual Studio International Pack ,今天試了一試,確實好用!下面分享下使用方法:
首先下載Visual Studio International Pack 1.0,官方:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=44CAC7F0-633B-477D-AED2-99AEE642FC10&displaylang=zh-cn。下載完畢後解壓,解壓後可以發現7個MSI安裝檔案,其中CHSPinYinConv.msi是漢字拼音組件,CHTCHSConv.msi是進行繁簡體互轉組件,安裝這兩個MSI就可以了 (x86作業系統上的預設安裝目錄是 C:\Program Files\Microsoft Visual Studio International Pack\) 。安裝完畢後,需要在VS裡添加引用,分別引用:C:\Program Files\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library(拼音)下和C:\Program Files\Microsoft Visual Studio International Pack\Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool(繁簡互轉)下的dll 即可使用。
完成上面的工作後,使用方法就非常簡單了,下面看代碼:
using Microsoft.International.Converters.PinYinConverter;//匯入拼音相關
namespace WebApplication2
{
public class Class1
{
/// <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;
}
}
}
調用方法:(注意先引用)
GetPinyin("風影");//擷取全拼
GetFirstPinyin("風影");//擷取首字母
是不是非常簡單呢?有了這個類庫就省事多了!順便再補充一下繁簡體互轉的方法,某些時候可能會用到:
先匯入
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;
/// <summary>
/// 簡體轉換為繁體
/// </summary>
/// <param name="str">簡體字</param>
/// <returns>繁體字</returns>
public static string GetTraditional(string str)
{
string r = string.Empty;
r = ChineseConverter.Convert(str, ChineseConversionDirection.SimplifiedToTraditional);
return r;
}
/// <summary>
/// 繁體轉換為簡體
/// </summary>
/// <param name="str">繁體字</param>
/// <returns>簡體字</returns>
public static string GetSimplified(string str)
{
string r = string.Empty;
r = ChineseConverter.Convert(str, ChineseConversionDirection.TraditionalToSimplified);
return r;
}
該類庫的功能概述
Microsoft Visual Studio International Pack 1.0版 包括以下功能:
East Asia Numeric Formatting Library - 支援將小寫數字字串格式化成簡體中文,繁體中文,日文和韓文的大寫數字字串。
Japanese Kana Conversion Library - 支援將日文假名(Kana)轉化為另一種日文字元。
Japanese Text Alignment Library - 支援日文特有的一種對齊格式。
Japanese Yomi Auto-Completion Library - 類庫支援感知日文IME的輸入自動完成和一個文字框控制項的樣本。
Korean Auto Complete TextBox Control - 支援韓文IME的智能感知和輸入自動完成的文字框控制項。
Simplified Chinese Pin-Yin Conversion Library - 支援擷取簡體中文字元的常用屬性比如拼音,多音字,同音字,筆畫數。
Traditional Chinese to Simplified Chinese Conversion Library and Add-In Tool - 支援簡繁體中文之間的轉換。該組件還包含一個Visual Studio整合式開發環境中的外掛程式(Add-in)支援簡繁體中文資源檔之間的轉換。
Visual Studio International Feature Pack 2.0 是對 1.0 版本的擴充,包含一組控制項和類庫:
- Yomigana Framework 包含了類庫和控制項。
- 類庫:Yomigana 類庫容許對串(string)類型加註 Yomigana,同時也支援對一般類型的註解功能,任何實現了IEnumerable介面的對象都可以被串類型和泛型的執行個體註解。為了簡化複雜的註解字串比較特設計了支援各種日文比較選項的比較類型。
- 通用的一些類,用泛型實現對一個可枚舉的類型注音。
- 特殊目的的一些類,用以上泛型實現對一個字串用某種類型中注音。
- 特殊目的的一些StringAnnotation 類,用以上泛型實現對一個字串用字串注音,包括解析和格式化功能。
- 一個比較子類,使用以上類實現比較字串。
- 一個實現了 IEnumerable <string> 的資料結構,把一個字串分成枚舉的字串段,並用 IEnumerator <string> 輸出。
- 控制項:
- 增強Ajax/WPF/WinForm 文字框(TextBox)控制項 用來根據使用者的輸入捕獲讀音。
- 一個增強使用Ruby標籤的ASP.NET Label控制項。
- Chinese Text Alignment Class Library and TextBox Controls 包含支援簡體中文文本對齊的WinForm 和 WPF 的TextBox控制項, 以及供協助開發人員很容易地按中文文本對齊顯示字串的一個類庫。
- Chinese Auto Complete Class Library and TextBox Controls 包含支援感知簡體中文和繁體中文IME並自動完成的WinForm 和 WPF 的TextBox控制項, 以及供開發人員很容易地向標準控制項添加感知IME並自動完成功能的一個類庫。
- Korean Auto Complete Class Library and ComboBox Controls 包含支援感知韓語IME並自動完成的WinForm 和 WPF 的ComboBox控制項, 以及供開發人員很容易地向標準控制項添加感知IME並自動完成功能的一個類庫。
- Numeric Formatting Class Library 包含支援五種語言的數字格式化成文字的類, 2.0 版支援格式化阿拉伯數字為阿拉伯文字。
可見,這個類庫在開發國際化程式時是非常實用的。