中文转拼音without CJK

为解决Xamarin Android应用中按中文首字母分组的需求,本文介绍了一个自定义的中文字符转换为拼音的实用工具类。该工具通过硬编码方式实现了中文字符到拼音的映射,适用于地址簿等场景。

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

 

转载于:https://www.cnblogs.com/chsword/p/xamarin_chinese_to_pinyin.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值