c Chinese to Pinyin without CJK

  • 2021-12-04 19:35:03
  • OfStack

When Xamarin writes an Android program, it is usually displayed in groups according to Chinese initials (such as address book).

So you need to be forced to include CJK, but the package will definitely get bigger after inclusion, so. . . . I wrote a hard enumeration of Chinese to Pinyin class.

The principle is this:


public class PinYinUtils
{
 private static readonly Dictionary<string, string> PinYinDict = new Dictionary<string, string>
 {

 {" Ape ", "YUAN"}
 //  Etc ............
 };
 /// <summary>
 /// Return to the first letter
 /// </summary>
 /// <param name="word">Chinese word</param>
 /// <example>
 /// GetFirstPinyinChar(" Zhang 3")
 /// 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(' Blessing ')
 /// 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(' Blessing ')
 /// 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;
 }
}

Source code:

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

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


Related articles: