C#使用微軟語言包來獲取中文漢字的拼音、拼音首字母、中文繁體

首先需要獲取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中引用了。

默認的語言包類庫文件引用地址:“C:\Program Files (x86)\Microsoft Visual Studio International Pack\Simplified Chinese Pin-Yin Conversion Library\ChnCharInfo.dll”



示例:

using引用命名空間:

using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

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;
        }

    }
}

結果:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章