你可以定义一个新的串,像这样:
String str = “我aa爱b北京dd天安门gg”;
str = str.substring(0,10)+"...";
System.out.println(str);

解决方案 »

  1.   

    “我aa爱b北...”是多少长度?如果按楼主的字节算法,长度是12;如果按Java的默认算法,长度是9。BTW,Java中默认的Unicode编码,中英文字符都是2个字节。
      

  2.   

    可以给你一个思路。用String -> byte[] --> String 的方式完成,
    不过需要对截取了的byte[]逆向判断连续高位为1的字节是否为偶数再做是否要长度+1或-1的操作
    最后用这个byte[], new String(byte[],int offset, int length)+"..."合成。
      

  3.   

    public class TestBc { public static void main(String[] args) {
    String s = "我爱d北京天安门dfj困乏第四纪";
    char[] buffer = new char[s.length() * 2];
    char c;
    int j = 0;
    int num = 0; //规定字的个数
    for (int i = 0; i < s.length(); i++) {
    if(num<10){
    if (s.charAt(i) >= 0x100) {
    c = s.charAt(i);
    byte[] buf = ("" + c).getBytes();
    buffer[j++] = (char) buf[0];
    buffer[j++] = (char) buf[1];
    num++;
    } else {
    buffer[j++] = s.charAt(i);
    num++;
    }
    }
    else{
    break;
    }
    }
    String s1 = new String(buffer,0,j);
    String s2 = s1;
    byte [] buffer2 = new byte[s2.length()]; for(int i=0;i<s2.length();i++) {
    buffer2[i] = (byte)s2.charAt(i);
    }
    String s3 = new String(buffer2)+"...";
    System.out.println("输出结果");
    System.out.println(s3);

    }}
      

  4.   

    感谢henryzd提供代码,搞定了。