详细举例:
cur为当前位置,
String s1,s2;
StringBuffer s;
在一个循环中:
s1=String.substring(cur,cur+30);
尔后,s.append(s1);
出了循环后,s2=new String(s);
结果一行打出三十个汉字。
但当前面加上一个空格时,index的异常抛出,在60处,说明是双字节啊。

解决方案 »

  1.   

    s1 = String.copyValueOf(data, cur, 30);
      

  2.   

    sorry, s1 = String.copyValueOf(String.toCharArray[], cur, 30);
      

  3.   

    楼上那位大哥的方法我没试过,但java默认unicode编码,那样可以吗?
    我已经搞定了,方法贴在这里仅供大家留作参考
    用于转化的类是这样的:
    import sun.io.*;public class StringFormat {
      public StringBuffer s;
      public String encoding="gb2312";
      byte[] b;char[] c;
      public StringFormat() {
        s=new StringBuffer();
      }
      public String addBr(String s1){
        String temp,s2;
        try{
           b=s1.getBytes();
        c=ByteToCharConverter.getConverter(encoding).convertAll(b);
        }
        catch(Exception e){System.out.print("ad:convert exception:"+e.getMessage());}
        int leng=c.length;
        int cur;
        for(cur=0;cur<leng;cur++)
        {
          s.append(c[cur]);
          int a=cur % 30;
          if(a==0&&cur>0)s.append("<br>");
        }
        s.append("<br>");
        s2=new String(s);
        return s2;
      }

    大家还有更好的方法吗?
      

  4.   

    把编码转化一下再分隔roleName=new String(roleName.getBytes("ISO8859_1"));
      

  5.   

    signboy(横)兄, 这样是不行的。
    你可以自己试一下,我试过了。
      

  6.   

    发现一个更令人郁闷的问题,我做的论坛在读取用户输入的内容的时候自动附加和过滤了很多东西。在textarea中输入的段落都显示不出来了,空格全部省略,分段标记也没有。值得注意的是,如果我用微软abc,则会在每行后自动添加一个换行符,
    比如我的输入如果是
        大家好。
        欢迎来到论坛。
    则显示:
    大家好。欢迎来到论坛。如果是:
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    经过刚才写的过滤则显示为:
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    啊啊啊啊啊
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
    如果是英文,比如
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    不经过过滤,则为
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(显示在同一行中)
    我星期六早晨就交公了,现在遇到这种问题,急啊。
    那位能帮一下
    感激不尽。
      

  7.   

    存到数据库之前用:
    public static String transform(String content)
    {
    contentnew=rs.replaceAll("&","&amp;");
    contentnew=rs.replaceAll("<","&lt;");
    contentnew=rs.replaceAll(" ","&nbsp;");
    contentnew=rs.replaceAll(">","&gt;");
    contentnew=rs.replaceAll("\n","<br>");
    return content
    }
    处理一下,不用再分行或其它的处理.
    适用JDK1.4及以上,JDK1.4以下写一个replaceAll的方法换一下.