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