123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace CZFW.Core.Helper
- {
- public class ChineseHelper
- {
- /// <summary>
- /// 在指定的字符串列表CnStr中检索符合拼音索引字符串
- /// </summary>
- /// <param name="CnStr">汉字字符串</param>
- /// <returns>相对应的汉语拼音首字母串</returns>
- public static string GetSpellCode(string CnStr, bool removeSpecialCharacter=true)
- {
- if (removeSpecialCharacter)
- {
- CnStr = CnStr.Replace("有限", "").Replace("公司", "").Replace("(", "").Replace(")", "").Replace("(", "").Replace(")", "").Replace("北京","");
- }
- 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.GetEncoding("GB2312").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]);
- //int i3 = (short)(ZW[2]);
- iCnChar = i1 * 256 + i2;
- }
- // 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 ("");
- }
- }
- }
|