编写一个截取字符串的函数,输入一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截半个,如:
输入“我ABC的”,6
输出要为“我ABC”,而不是“我ABC”+半个“的”字

解决方案 »

  1.   

    用正则表达式可以判断一个字符串是中文
    String test="汉字";
    if(test.matches("[\\u4E00-\\u9FA5]+")) 
         System.out.println("chinese chars");
      

  2.   

    System.out.println(str.length()==str.getBytes().length?"English":"Contains Chinese");
      

  3.   

    static public String isChinese(String chinese) {
    String ucode = "";
    String strChinese = "";
    String strASC = "";
    try {
    int clen;
    clen = chinese.length(); //取字符串长度
    String utemp = "";
    char[] strBuffer = chinese.toCharArray(); //将字符串转化为字符数组
    int l; //每个字符转换后的二进制字符串的长度
    int s;for (int i = 0; i < clen; i++) {
    s = (int) strBuffer[i]; //取一个字符
    utemp = Integer.toHexString(s).toUpperCase();
    l = utemp.length();
    if (l <= 2) { //如果是ASC字符
    utemp = "00" + utemp;
    //保存ASC字符到strASC
    strASC += chinese.substring(i,i+1);
    }else{
    //保存中文字符到strChinese
    strChinese += chinese.substring(i,i+1);
    }
    ucode = ucode + utemp;
    }
    System.err.println(strASC);
    System.err.println(strChinese);
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    return strChinese;}这个函数就可以判断是否为中文字符
      

  4.   

    http://blog.csdn.net/westwin/archive/2005/01/14/253582.aspx
      

  5.   

    我有一个笨方法,不知道可否判断最后一个字符
    如说得第n个字符的byte的最高位(第7位)是否为1
    如果为1,记count=1
    那么需要连接下一个byte,然后向前逐个连续查询高位是否是1,count++;
    直道不为1 或者数组到头了为止。如果count被2整除。那么就可以了
    如果不被2整除。那么必须把n+1的字符也取进来。