C# 獲取漢字拼音首字母(修正)

獲取漢字的拼音首字母(大寫),如果爲英文的則返回其大寫形式。


這段代碼來源由網絡,稍作修改,修改了x變成?的bug。


測試文字:啊吧才的額飛個好就看了嗎你哦平去人是他我想一在
測試結果:ABCDEFGHJKLMNOPQRSTWXYZ
源代碼如下:


using System;
using System.Collections.Generic;
using System.Text;

namespace CommonLibrary
{
     
public class CNSpellTranslator
    {

        
/// <summary> 
        
/// 在指定的字符串列表CnStr中檢索符合拼音索引字符串 
        
/// </summary> 
        
/// <param name="CnStr">漢字字符串</param> 
        
/// <returns>相對應的漢語拼音首字母串</returns> 
        public static string GetSpellCode(string CnStr)
        {
            
string strTemp = "";
            
int iLen = CnStr.Length;
            
int i = 0;

            
for (i = 0; i <= iLen - 1; i++)
            {
                strTemp 
+= GetCharSpellCode(CnStr.Substring(i, 1));
            }

            
return strTemp;
        }


        
/// <summary> 
        
/// 得到一個漢字的拼音第一個字母,如果是一個英文字母則直接返回大寫字母 
        
/// </summary> 
        
/// <param name="CnChar">單個漢字</param> 
        
/// <returns>單個大寫字母</returns> 
        private static string GetCharSpellCode(string CnChar)
        {
            
long iCnChar;

            
byte[] ZW = System.Text.Encoding.Default.GetBytes(CnChar);

            
//如果是字母,則直接返回 
            if (ZW.Length == 1)
            {
                
return CnChar.ToUpper();
            }
            
else
            {
                
// get the array of byte from the single char 
                int i1 = (short)(ZW[0]);
                
int i2 = (short)(ZW[1]);
                iCnChar 
= i1 * 256 + i2;
            }

            
//expresstion 
            
//table of the constant list 
            
// 'A'; //45217..45252 
            
// 'B'; //45253..45760 
            
// 'C'; //45761..46317 
            
// 'D'; //46318..46825 
            
// 'E'; //46826..47009 
            
// 'F'; //47010..47296 
            
// 'G'; //47297..47613 

            
// 'H'; //47614..48118 
            
// 'J'; //48119..49061 
            
// 'K'; //49062..49323 
            
// 'L'; //49324..49895 
            
// 'M'; //49896..50370 
            
// 'N'; //50371..50613 
            
// 'O'; //50614..50621 
            
// 'P'; //50622..50905 
            
// 'Q'; //50906..51386 

            
// 'R'; //51387..51445 
            
// 'S'; //51446..52217 
            
// 'T'; //52218..52697 
            
//沒有U,V 
            
// 'W'; //52698..52979 
            
// 'X'; //52980..53640 
            
// 'Y'; //53689..54480 
            
// 'Z'; //54481..55289 

            
// iCnChar match the constant 
            if ((iCnChar >= 45217&& (iCnChar <= 45252))
            {
                
return "A";
            }
            
else if ((iCnChar >= 45253&& (iCnChar <= 45760))
            {
                
return "B";
            }
            
else if ((iCnChar >= 45761&& (iCnChar <= 46317))
            {
                
return "C";
            }
            
else if ((iCnChar >= 46318&& (iCnChar <= 46825))
            {
                
return "D";
            }
            
else if ((iCnChar >= 46826&& (iCnChar <= 47009))
            {
                
return "E";
            }
            
else if ((iCnChar >= 47010&& (iCnChar <= 47296))
            {
                
return "F";
            }
            
else if ((iCnChar >= 47297&& (iCnChar <= 47613))
            {
                
return "G";
            }
            
else if ((iCnChar >= 47614&& (iCnChar <= 48118))
            {
                
return "H";
            }
            
else if ((iCnChar >= 48119&& (iCnChar <= 49061))
            {
                
return "J";
            }
            
else if ((iCnChar >= 49062&& (iCnChar <= 49323))
            {
                
return "K";
            }
            
else if ((iCnChar >= 49324&& (iCnChar <= 49895))
            {
                
return "L";
            }
            
else if ((iCnChar >= 49896&& (iCnChar <= 50370))
            {
                
return "M";
            }

            
else if ((iCnChar >= 50371&& (iCnChar <= 50613))
            {
                
return "N";
            }
            
else if ((iCnChar >= 50614&& (iCnChar <= 50621))
            {
                
return "O";
            }
            
else if ((iCnChar >= 50622&& (iCnChar <= 50905))
            {
                
return "P";
            }
            
else if ((iCnChar >= 50906&& (iCnChar <= 51386))
            {
                
return "Q";
            }
            
else if ((iCnChar >= 51387&& (iCnChar <= 51445))
            {
                
return "R";
            }
            
else if ((iCnChar >= 51446&& (iCnChar <= 52217))
            {
                
return "S";
            }
            
else if ((iCnChar >= 52218&& (iCnChar <= 52697))
            {
                
return "T";
            }
            
else if ((iCnChar >= 52698&& (iCnChar <= 52979))
            {
                
return "W";
            }
            
else if ((iCnChar >= 52980&& (iCnChar <= 53640))
            {
                
return "X";
            }
            
else if ((iCnChar >= 53689&& (iCnChar <= 54480))
            {
                
return "Y";
            }
            
else if ((iCnChar >= 54481&& (iCnChar <= 55289))
            {
                
return "Z";
            }
            
else return ("?");
        }


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