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 ("?");
        }


    }
}
posted @ 2009-08-19 19:58  Dube  阅读(4386)  评论(7编辑  收藏  举报