这段代码来源由网络,稍作修改,修改了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 ( " ? " );
}
}
}
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 ( " ? " );
}
}
}