解决方案 »

  1.   

    我先说一下你的意思,看理解的对不对:
    实现一个subString(String sourceString, int num)方法,对字符串进行截取,
    sourceString参数为源串,num为要截取的字符长度。其中要实现中英文混和,就是中文
    字符占用两个字节,也要算作一个字符。
    对于gbk编码的系统而言,汉字的编码占用两个字节,第一个字节的值在81到FE之间
    而英文和字符的ascii码值都小于0x81这样可以对源字符串进行遍历,通过判断第一个
    字节的值来判断是否为中文字符,可以实现目标。
    不同的操作系统内部采用的编码标准可能不同,具体的实现依赖于你的编码标准,
    windows系统好像使用的都是gbk的编码标准
      

  2.   

    截取字符串,判断其ascii吗是否大于160,如果大于160则是汉字!
      

  3.   

    如果需要中文字符占用两个字节,也要算作一个字符,那就直接str.substring(int),如"你a好吗abc哈"的substring(2)就是"好吗abc哈"。
    否则,如果需要结果是"a好吗abc哈",那可以先getBytes(),然后再System.copyarray()。
            byte[] bs = s.getBytes();
            byte[] bb = new byte[bs.length - 2];
            System.arraycopy(bs, 2, bb, 0, bs.length - 2);
            s = new String(bb);
      

  4.   

    to xsmart(刘旭) :
      你这个方法不通用吧。如果取3个字符了,有些情况下就有乱码。
      

  5.   

    取3字节中文的时候,判断一下,第3个就不要取了判断中英文可以用getBytes(),中文打印出来是负值
      

  6.   

    我记得我在5年前就处理过这样的事情,那时候用PB.
    对字符串的长度做一个循环,截取字符串的每个字符,用ascii值对每个字符作处理
    如果该字符的ascii值大于160,则,该字符肯定是汉字的一半,且显示的是乱码。然后将相邻的
    字符拼装成汉字。(拼装的函数我忘记了)
    全长度循环,双位拼装。
      

  7.   

    class SplitString {
    String SplitStr; int SplitByte; public SplitString(String str, int bytes) {
    SplitStr = str;
    SplitByte = bytes;
    System.out.println("The String is:'" + SplitStr + "';SplitBytes="
    + SplitByte);
    } public void SplitIt() {
    int loopCount; loopCount = (SplitStr.length() % SplitByte == 0) ? (SplitStr.length() / SplitByte)
    : (SplitStr.length() / SplitByte + 1);
    System.out.println("Will Split into " + loopCount);
    for (int i = 1; i <= loopCount; i++) {
    if (i == loopCount) { System.out.println(SplitStr.substring((i - 1) * SplitByte,
    SplitStr.length()));
    } else { System.out.println(SplitStr.substring((i - 1) * SplitByte,
    (i * SplitByte)));
    }
    }
    } public static void main(String[] args) {
    SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人", 5); ss.SplitIt();
    }
    }
    转载
      

  8.   

    to zx2002027(希望之星) :
      你给的程序好像不对吧?
      

  9.   

    看看这个:)对字符串按照byte位截取的问题!
    http://community.csdn.net/Expert/TopicView3.asp?id=4971224应该对你有帮助!
      

  10.   

    呵呵,在现JBUILDER下面写了一下:
    String str = "abc我爱山abc东省";
            System.out.println(str.substring(1,6));
    打印出来的结果是:
     bc我爱山
    System.out.println(str.substring(1,5));
    打印结果是:
     bc我爱
    前天的时候给一个人面试的时候人家是这么写的,我当时还以为他的答案有问题,结果今天看到帖子自己试了一下,结果竟然是这样的~瀑布汗啊~编码格式~
      

  11.   

    String str = "abc啊不才";
    str.subString(4);
    str.subString(5);
    按楼主的要求应该都是"啊不才"?
      

  12.   

    java内部使用unicode编码,不存在这个问题的
      

  13.   

    String本身就是char数组!!本来就是一个字符一个字符分开了的