C#漢字のピンイン

9507 ワード

インストール依存関係:NPinyin
         Microsoft.International.Converters.PinYinConverter
vsのnugetマネージャから直接検索してダウンロードすればいいです. public class PinYinHelper { private static Encoding gb2312 = Encoding.GetEncoding("GB2312"); /// /// /// public static string ConvertToAllSpell(string strChinese, IDictionary<char, string> pinyinDic = null) { try { if (strChinese.Length != 0) { var fullSpell = new StringBuilder(); for (var i = 0; i < strChinese.Length; i++) { var chr = strChinese[i]; var pinyin = GetSpell(chr); fullSpell.Append(pinyin); } return fullSpell.ToString().ToLower(); } } catch (Exception e) { Console.WriteLine("" + e.Message); } return string.Empty; } /// /// /// /// /// public static string GetFirstSpell(string strChinese) { //NPinyin.Pinyin.GetInitials(strChinese) Bug //return NPinyin.Pinyin.GetInitials(strChinese); try { if (strChinese.Length != 0) { var fullSpell = new StringBuilder(); for (var i = 0; i < strChinese.Length; i++) { var chr = strChinese[i]; fullSpell.Append(GetSpell(chr)[0]); } return fullSpell.ToString().ToLower(); } } catch (Exception e) { Console.WriteLine("" + e.Message); } return string.Empty; } private static string GetSpell(char chr) { var coverchr = NPinyin.Pinyin.GetPinyin(chr); var isChineses = ChineseChar.IsValidChar(coverchr[0]); if (isChineses) { var chineseChar = new ChineseChar(coverchr[0]); foreach (var value in chineseChar.Pinyins) { if (!string.IsNullOrEmpty(value)) { return value.Remove(value.Length - 1, 1); } } } return coverchr; } /// /// /// /// /// /// private static string GetFromPinYinDic(char c, IDictionary<char, string> pinyinDic) { if (pinyinDic == null || pinyinDic.Count == 0 || !pinyinDic.ContainsKey(c)) { return ""; } return pinyinDic[c]; } }