Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。
于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个硬枚举的中文转拼音的类。
原理是这样的:
public class PinYinUtils{ private static readonly DictionaryPinYinDict = new Dictionary { { "猿", "YUAN"} // 等............ }; /// /// Return to the first letter /// /// Chinese word ////// GetFirstPinyinChar("张三") /// will return "Z" /// Can be used for address book index and so on /// ///public static string GetFirstPinyinChar(string word) { if (word.Length == 0) return "#"; var firstLetter = word[0].ToString(); if (PinYinDict.ContainsKey(firstLetter)) { return PinYinDict[firstLetter]; } return firstLetter; } /// /// return the chinese char's pinyin /// /// ////// GetPinYin('福') /// will return "FU" /// ///public static string GetPinYin(char chineseChar) { var str = chineseChar.ToString(); if (PinYinDict.ContainsKey(str)) { return PinYinDict[str]; } return null; } /// /// Get the phonetic abbreviation for Chinese char /// /// ////// GetShortPinYin('福') /// will return "F" /// ///public static string GetShortPinYin(char chineseChar) { var str = chineseChar.ToString(); if (PinYinDict.ContainsKey(str)) { var first = PinYinDict[str].FirstOrDefault(); if (first == 0) return null; return first.ToString(); } return null; }}
源码:
GITHUB: