1. 程式人生 > >C#漢字轉化成拼音的演算法

C#漢字轉化成拼音的演算法

public static string ChineseToFullPinYin(string chinese) 
{ // 匹配中文字元
    Regex regex = new Regex("^[\u4e00-\u9fa5]$");
    byte[] array = new byte[2]; 
      string pyString = "";
     int chrAsc = 0; 
      int i1 = 0;
     int i2 = 0;
     char[] noWChar = chinese.ToCharArray();
     for (int j = 0; j < noWChar.Length; j++) 
         { 
               // 中文字元
               if (regex.IsMatch(noWChar[j].ToString()))
                   { array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString());
                     i1 = (short)(array[0]);
                     i2 = (short)(array[1]); 
                      chrAsc = i1 * 256 + i2 - 65536; 
                       if (chrAsc > 0 && chrAsc < 160) 
                          { pyString += noWChar[j]; } 
                       else { // 修正部分文字 
                             if (chrAsc == -9254) 
                           // 修正"圳"字 
                            {pyString += "Zhen";} 
                          else if (chrAsc == -12080) 
                                { pyString += "Hang"; }
                               else 
                                    { 
                                        for (int i = (pyValue.Length - 1); i >= 0; i--)
                                        { if (pyValue[i] <= chrAsc) { pyString += pyName[i]; break; } 
                                     } 
                           } 
                       }
                  } 
              // 非中文字元 
               else { pyString += noWChar[j].ToString(); }
          } 
     return pyString;
 }