c# 中文转拼音without CJK

作者:袖梨 2022-06-25

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

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

原理是这样的:

代码如下 复制代码

publicclassPinYinUtils

{

privatestaticreadonlyDictionary PinYinDict =newDictionary

{

{"猿","YUAN"}

// 等............

};

///

/// Return to the first letter

///

/// Chinese word

///

/// GetFirstPinyinChar("张三")

/// will return "Z"

/// Can be used for address book index and so on

///

///

publicstaticstringGetFirstPinyinChar(stringword)

{

if(word.Length == 0)return"#";

var firstLetter = word[0].ToString();

if(PinYinDict.ContainsKey(firstLetter))

{

returnPinYinDict[firstLetter];

}

returnfirstLetter;

}

///

/// return the chinese char's pinyin

///

///

///

/// GetPinYin('福')

/// will return "FU"

///

///

publicstaticstringGetPinYin(charchineseChar)

{

var str = chineseChar.ToString();

if(PinYinDict.ContainsKey(str))

{

returnPinYinDict[str];

}

returnnull;

}

///

/// Get the phonetic abbreviation for Chinese char

///

///

///

/// GetShortPinYin('福')

/// will return "F"

///

///

publicstaticstringGetShortPinYin(charchineseChar)

{

var str = chineseChar.ToString();

if(PinYinDict.ContainsKey(str))

{

var first = PinYinDict[str].FirstOrDefault();

if(first == 0)returnnull;

returnfirst.ToString();

}

returnnull;

}

}

源码:

相关文章

精彩推荐