String中的length()方法对汉字试为一个汉字算一个长度,怎样判断一个字符是不是汉字,并将起长度试为二呢,java有没有这类方法解决,求大家帮忙。

解决方案 »

  1.   

    字符是不是汉字可用正则表达式: [\u4e00-\u9fa5]String str = "汉";
    Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
    Matcher m = p.matcher(str);
    System.out.println(m.find());
      

  2.   

    String a = "中国";
    byte[] b = a.getBytes("gb2312");
    System.out.print(b.length);
      

  3.   

    String a = "中国abc";
    byte[] b = a.getBytes("gb2312");
    System.out.print(b.length);
    上面那个输出长度为4,这个输出来长度为7
      

  4.   

    谢谢了,再问一个问题,怎么样判断一个char字符是不是汉字呢
      

  5.   

    汉字他实现是在每个字节前加了一个1吧..所以只要判断这个Byte是不是负数就行,汉字或其他双字节的都是负数...
    我是新手..讲得不对请高手指正
      

  6.   

    这样的问题在csdn上不少于20遍
      

  7.   

    mq612(五斗米)和beyh(beyh)都是正解但是不知道哪个效率更高,尤其是在大字符的时候?
      

  8.   

    如果一个字符用 两个字节现实那就是汉字 
    String.length =1 
    String.getBytes().length>1 那就是汉字
    这里是指本地化编码
      

  9.   

    skycncomp(写代码真累)
    =====================
    这样的问题在csdn上不少于20遍=========================都怪CSDN的搜索引擎太差,搜不到那20多遍问题 只能从复提问了
      

  10.   

    public static void main(String[] args) {
            String str = "我shi一个猫";
            System.out.println(str.getBytes().length);
        }
      

  11.   

    谢谢了,再问一个问题,怎么样判断一个char字符是不是汉字呢============================    public static void main(String[] args) {
            String str = "我lu是ya一个ng猫";
            char[] arr = str.toCharArray();
            for (int i = 0; i < arr.length; i++) {
                if (String.valueOf(arr[i]).matches("\\w+")) {
                    System.out.println("字符 \"" +  arr[i] + " \"是" + "字母");
                } else {
                    System.out.println("字符  \"" +  arr[i] + " \"是" + "汉字");
                }
            }
            
        }字符  "是 "是汉字
    字符 "y "是字母
    字符 "a "是字母
    字符  "一 "是?字
    字符  "个 "是?字
    字符 "n "是字母
    字符 "g "是字母
    字符  "猫 "是汉字
      

  12.   

    纠正一下运行结果:字符  "我 "是汉字
    字符 "l "是字母
    字符 "u "是字母
    字符  "是 "是?字
    字符 "y "是字母
    字符 "a "是字母
    字符  "一 "是汉字
    字符  "个 "是汉字
    字符 "n "是字母
    字符 "g "是字母
    字符  "猫 "是汉字
      

  13.   

    -_-!~ 这是4月份的帖子被我顶上来的。不过 谢谢花猫!
    =================
    判断一个char字符是不是汉字如果字符串中有“?/.-=+!~”之类的非[a-zA-Z_0-9]字符 是不是就不好用了?!
      

  14.   

    判断一个char字符是不是汉字如果字符串中有“?/.-=+!~”之类的非[a-zA-Z_0-9]字符 是不是就不好用了?!=======================================================================这个是不是有点钻牛角尖了,赫赫。
    适当的自己做点变通吧。下面有没有达人会啊?还有,这个帖子4月份的,我晕死啊。
    又是一个发帖不结帖的。
      

  15.   

    百度好用       强烈建议CSDN改进搜索引擎 不行多弄几台机器查询用。
    ========================================================
    汉字的unicode编码范围是4e00-9fa5,所以使用正则表达试就可以判断一个汉字是不是汉字了:[\u4e00-\u9fa5] ================================
    楼主这样的问题我是通过不同编码来实现的
      

  16.   

    谢谢  okzrz(淡水鱼) (
     
    public static void main(String[] args) {
            String str = "我lu是ya一个ng猫";
            char[] arr = str.toCharArray();
            for (int i = 0; i < arr.length; i++) {
                if (String.valueOf(arr[i]).matches("[\u4e00-\u9fa5]")) {
                    System.out.println("字符  \"" +  arr[i] + " \"是" + "汉字");
                } else {                System.out.println("字符 \"" +  arr[i] + " \"是" + "字母");
                }
            }
        }
    这样就OK了。