CSharp: pinyin in net 5 漢字拼音聲調

 

using System;
using NPinyin; //https://github.com/WuTong1995/NPinyin 
using Microsoft.International.Converters.PinYinConverter;
using Microsoft.International.Converters.TraditionalChineseToSimplifiedConverter;

using System.Linq;
using System.Text.RegularExpressions;
using System.Text;

/*
 css https://www.w3.org/International/questions/qa-ruby
https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/rt

https://www.microsoft.com/en-us/download/details.aspx?id=18970
 */


namespace ConsoleApp1
{




    class Program
    {
        static void Main(string[] args)
        {

            var hans = "塗聚文是中國江西吉州人,言語成了搶功盡責的功臣,還要行爲來值班嗎";
            var pinyin = new Pinyin();
            pinyin.Option = new PinyinOption()
            {
                //Style = PinyinStyle.Normal, // 不帶聲調(默認) zhong wen
                Style = PinyinStyle.Tone, // 帶聲調 zhōng wén
                EnableInterval = true       // 多個拼音之間是否啓用間隔 zhong wen  zhongwen
            };
            var result = pinyin.ConvertToPinyin(hans); // zhong wen

            var pi = GetPinYin(hans);

            var pin = GetPinYinFull(hans);

            Console.WriteLine("Hello C# World! geovindu\t\n");
            Console.WriteLine(result.ToString()+ "\t\n");
            Console.WriteLine(pi.ToString() + "\t\n");
            Console.WriteLine(pin.ToString() + "\t\n");

        }

 
        /// <summary>
        /// 獲得中文字符串的拼音 沒有聲調
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private static string GetPinYin(string str)
        {
            string py = "";

            for (int i = 0; i < str.Length; i++)
            {
                if (ChineseChar.IsValidChar(str[i]))//判斷當前字符是不是漢字
                {
                    ChineseChar cc = new ChineseChar(str[i]);//構造方法
                    py +=" "+ cc.Pinyins[0].TrimEnd('1', '2', '3', '4', '5').ToLower();
                }
                else//不是漢字的話 加本身
                {
                    py += " " + str[i];
                }

            }

            return py;
        }
        ///<summary>
        /// 漢字
        /// </summary>
        private static string ChineseReg = "^[\\u4E00-\\u9FA5]+$";

        public static string GetPinYinFull(string str)
        {
            var pySb = new StringBuilder();
            foreach (var itemChar in str)
            {
                //過濾非漢字的字符,直接返回
                var reg = new Regex(ChineseReg);
                if (!reg.IsMatch(itemChar.ToString()))
                {
                    pySb.Append(" " + itemChar);
                }
                else
                {
                    var chineseChar = new ChineseChar(itemChar);
                    //var pyStr = chineseChar.Pinyins.First().ToLower();
                    var pyStr = chineseChar.Pinyins.First().ToUpper();
                    pySb.Append(" " + pyStr.Substring(0, pyStr.Length - 1));
                }
            }
            return pySb.ToString();
        }

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

    }
   

}

  

 

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