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


    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值