好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# 中文转拼音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测试数据/chsword/PinYinUtil/blob/master/PinYinUtils.cs

GITHUB:https://github测试数据/chsword/PinYinUtil

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持服务器之家!

原文链接:http://HdhCmsTestcnblogs测试数据/chsword/p/xamarin_chinese_to_pinyin.html

dy("nrwz");

查看更多关于c# 中文转拼音without CJK的详细内容...

  阅读:48次