是啊,偶也遇到这个问题,同样也没有解决。
我想是可不可以去查一下简体中文字符在 Unicode 当中的编码段,那么只要其Unicode码不在这个段当中,就可以肯定不是汉字。不过至于是不是英文还不一定。有人知道现成答案吗?

解决方案 »

  1.   

    String a=new String("abcd还");
         for (int i=0;i<a.length();i++){
           char c = a.charAt(i);
           if(c>127) System.out.println("中文字符:"+c);
           else      System.out.println("英文字符:"+c);
         }
      

  2.   

    /**
     * <p>Title: 判断是否为汉字</p>
     * <p>Copyright: Copyright (c) 2004</p>
     * <p>Company: 广东公司</p>
     * @author 网络信息部 庆丰
     * @version 1.0
     */package erp.com;public class isChinese {
      public isChinese() {
      }  /**
       * 输入的字符是否是汉字
       * @param a char
       * @return boolean
       */
      public boolean isChinese(char a) {
        int v = (int) a;
        return (v >= 19968 && v <= 171941);
      }
      

  3.   

    /**
       * 获取字符串共有汉字的数目
       * @param a String
       * @return int
       */
      public int Chineses(String a) {
        int cnt = 0;
        for (int i = 0; i < a.length(); i++) {
          if (isChinese(a.charAt(i))) {
            cnt++;
          }
        }
        return cnt;
      }  /**
       * 根据字节数来剪切字符串,类似substring
       * @param a String 字符串
       * @param n int 指定字节数 英文占1个字节 汉字占两个字节
       * @return String
       */
      public String cutString(String a, int n) {
        int num = 0;
        String b="";
        for (int i = 0; i < a.length(); i++) {
          if (isChinese(a.charAt(i))) {
            num = num + 2;
          }
          else num++;
          b = b + a.charAt(i);
          if(num>=n-1){
           break;
          }    }
        return b;
      }
       public static void main(String args[]) {
         isChinese a=new isChinese();
          System.out.print(a.cutString("fqf.庆丰",100));
       }
    }
      

  4.   

    GB2312  0xB0A1-0xF7FE 汉字编码可以查看相关标准