c# 漢字轉拼音

 最近開發一個類似於OUTLOOK聯繫人那樣可以根據字母來過濾當前的聯繫人的模塊,使用上了微軟不久前提供的一個轉換漢字爲拼音的開發包,可以通過這裏進行下載。使用的方法很簡單,不過裏面的方法都是對於一個漢字使用而言,而且會包含音調,譬如“張”,轉換出來就會是“ZHANG1”,“學”,轉換出來就會是“XUE2”,如此類推。因此自己再封裝一下達到可以整個姓名轉換成拼音,並去掉沒用的音調。代碼如下:

 

  1. public class PinYinConverter
  2.     {
  3.         /// <summary>
  4.         /// 將字符串轉換成拼音
  5.         /// </summary>
  6.         /// <param name="chineseStr">姓名字符串</param>
  7.         /// <param name="includeTone">是否包含音調</param>
  8.         /// <returns></returns>
  9.         public static string ConvertToPinYin(string chineseStr, bool includeTone)
  10.         {
  11.             if (chineseStr == null)
  12.                 throw new ArgumentNullException("chineseStr");
  13.             char[] charArray = chineseStr.ToCharArray();
  14.             StringBuilder sb = new StringBuilder();
  15.             foreach (char c in charArray)
  16.             {
  17.                 ChineseChar chineseChar = new ChineseChar(c);
  18.                 ReadOnlyCollection<string> pyColl = chineseChar.Pinyins;
  19.                 foreach (string py in pyColl)
  20.                 {
  21.                     sb.Append(py);
  22.                 }
  23.             }
  24.             if (!includeTone)
  25.             {
  26.                 StringBuilder sb2 = new StringBuilder();
  27.                 foreach (char c in sb.ToString())
  28.                 {
  29.                     if (!char.IsNumber(c))
  30.                         sb2.Append(c);
  31.                 }
  32.                 return sb2.ToString();
  33.             }
  34.             return sb.ToString();
  35.         }
  36.         public static string ConvertToPinYin(string chineseStr)
  37.         {
  38.             return ConvertToPinYin(chineseStr, true);
  39.         }
  40.         public static bool IsValidChar(char ch)
  41.         {
  42.             return ChineseChar.IsValidChar(ch);
  43.         }
  44.         /// <summary>
  45.         /// 是否爲有效的中文字
  46.         /// </summary>
  47.         /// <param name="chn"></param>
  48.         /// <returns></returns>
  49.         public static bool IsValidChinese(string chn)
  50.         {
  51.             if (chn == null)
  52.                 throw new ArgumentNullException("chn");
  53.             foreach (char c in chn)
  54.             {
  55.                 if (!IsValidChar(c))
  56.                     return false;
  57.             }
  58.             return true;
  59.         }
  60.     }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章