中文转拼音without CJK

Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录) 。

于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个枚举的中文转拼音的类。

原理是这样的:

public class PinYinUtils
{
    private static readonly Dictionary<string, string> PinYinDict = new Dictionary<string, string>
    {

        {"", "YUAN"}
        // 等............
    };
    /// <summary>
    /// Return to the first letter
    /// </summary>
    /// <param name="word">Chinese word</param>
    /// <example>
    /// GetFirstPinyinChar("张三")
    /// will return "Z"
    /// Can be used for address book index and so on
    /// </example>
    /// <returns></returns>
    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;
    }
    /// <summary>
    /// return the chinese char's pinyin
    /// </summary>
    /// <param name="chineseChar"></param>
    /// <example>
    /// GetPinYin('福')
    /// will return "FU"
    /// </example>
    /// <returns></returns>
    public static string GetPinYin(char chineseChar)
    {
        var str = chineseChar.ToString();
        if (PinYinDict.ContainsKey(str))
        {
            return PinYinDict[str];
        }
        return null;
    }
    /// <summary>
    /// Get the phonetic abbreviation for Chinese char
    /// </summary>
    /// <param name="chineseChar"></param>
    /// <example>
    /// GetShortPinYin('福')
    /// will return "F"
    /// </example>
    /// <returns></returns>
    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;
    }

}

 

源码:

https://github.com/chsword/PinYinUtil/blob/master/PinYinUtils.cs

 

GITHUB:https://github.com/chsword/PinYinUtil

 

posted @ 2017-02-04 18:58  重典  阅读(1140)  评论(2编辑  收藏  举报