关闭

获取汉字首字母

683人阅读 评论(0) 收藏 举报

  /// <summary>
  /// 获取汉字首字母。
  /// </summary>
  private string GetPYChar(char c)
  {
   int tmp= 65536 + GetASCII(c);
   if(tmp>=45217 && tmp<=45252)
    return "A";
   else if (tmp>=45253 && tmp<=45760)
    return "B";
   else if(tmp>=45761 && tmp<=46317)
    return "C";
   else if(tmp>=46318 && tmp<=46825)
    return "D";
   else if(tmp>=46826 && tmp<=47009) 
    return "E";
   else if(tmp>=47010 && tmp<=47296) 
    return "F";
   else if(tmp>=47297 && tmp<=47613) 
    return "G";
   else if(tmp>=47614 && tmp<=48118)
    return "H";
   else if(tmp>=48119 && tmp<=49061)
    return "J";
   else if(tmp>=49062 && tmp<=49323) 
    return "K";
   else if(tmp>=49324 && tmp<=49895) 
    return "L";
   else if(tmp>=49896 && tmp<=50370) 
    return "M";
   else if(tmp>=50371 && tmp<=50613) 
    return "N";
   else if(tmp>=50614 && tmp<=50621) 
    return "O";
   else if(tmp>=50622 && tmp<=50905)
    return "P";
   else if(tmp>=50906 && tmp<=51386) 
    return "Q";
   else if(tmp>=51387 && tmp<=51445) 
    return "R";
   else if(tmp>=51446 && tmp<=52217) 
    return "S";
   else if(tmp>=52218 && tmp<=52697) 
    return "T";
   else if(tmp>=52698 && tmp<=52979) 
    return "W";
   else if(tmp>=52980 && tmp<=53640) 
    return "X";
   else if(tmp>=53689 && tmp<=54480) 
    return "Y";
   else if(tmp>=54481 && tmp<=62289)
    return "Z";
   else //如果不是中文,则不处理
    return c.ToString();
   
  }

  /// <summary>
  /// 是否为双字节字符。
  /// </summary>
  public static bool IsTwoBytesChar(char chr)
  {
   string str =chr.ToString();
   // 使用中文支持编码
   Encoding ecode = Encoding.GetEncoding("GB18030");
   if (ecode.GetByteCount(str) == 2)
   {
    return true;
   }
   else
   {
    return false;
   }
  }

  /// <summary>
  /// 得到字符的ASCII码
  /// </summary>
  public static int GetASCII(char chr)
  {
   Encoding ecode = Encoding.GetEncoding("GB18030");
   Byte[] codeBytes = ecode.GetBytes(chr.ToString());
   if ( IsTwoBytesChar(chr) )
   {
    // 双字节码为高位乘256,再加低位
    // 该为无符号码,再减65536
    return (int)codeBytes[0] * 256 + (int)codeBytes[1] - 65536;
   }
   else
   {
    return (int)codeBytes[0];
   }
  }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:79652次
    • 积分:1213
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:41篇
    • 译文:15篇
    • 评论:13条
    最新评论
    朋友的博客