日期:2014-05-20  浏览次数:20756 次

急问:对于一个字符,如果判断其是否为汉字?
我试了一下,java中的汉字是3个字节,而如字母等是1个字节,想知道是怎么设计的。重要的是,对于给定的字符(char型的),要如何才能识别其是否为汉字,最好能知道该汉字的首字母是多少。高手帮忙了!

------解决方案--------------------
基本的 CJK 汉字的 Unicode 码范围是 U4E00~U9FBF 的,不过 CJK 还有其他的扩展字符集,由于是 Unicode 组织在 2006 年制订的 Unicode 5.0 标准,在我的 JDK 1.5 中扩展字符集显示的都是“?”,就简单而言可以判断 \u4e00 ~ \u9fbf 之间的皆为汉字。

public static void main(String[] args) {
  char c = '槃 ';
  System.out.printf( "%c(U+%X): ", c, (int)c);
  if(c> = '\u4e00 ' && c <= '\u9fbf '){
    System.out.println( "是汉字 ");
  }else{
    System.out.println( "不是汉字 ");
  }
}
------解决方案--------------------
public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  System.out.print( "请输入一个字符: ");
  String s = sc.next();
  for(int i=0; i <s.length(); i++) {
    System.out.printf( "%c -- ", s.charAt(i));
    boolean b = (s.charAt(i) + " ").matches( "[\u4e00-\u9faf] ");
    System.out.println(b? "是汉字 ": "不是汉字 ");
  }
}