一聚教程网:一个值得你收藏的教程网站

热门教程

c# 中文转拼音without CJK

时间:2022-06-25 07:55:03 编辑:袖梨 来源:一聚教程网

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;

 }

}

源码:

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

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

热门栏目