中文转拼音without CJK_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 中文转拼音without CJK

中文转拼音without CJK

 2017/2/5 5:31:53  重典  程序员俱乐部  我要评论(0)
  • 摘要:Xamarin写Android程序时,通常要使用按中文首字母分组显示(如通讯录)。于是需要被迫包含CJK,不过包含后包肯定是会变大的,于是。。。。自己写了一个硬枚举的中文转拼音的类。原理是这样的:publicclassPinYinUtils{privatestaticreadonlyDictionary<string,string>PinYinDict=newDictionary<string,string>{{"猿","YUAN"}//等............}
  • 标签:

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

 

  • 相关文章
发表评论
用户名: 匿名