日期:2014-05-20  浏览次数:20987 次

如何对一个字符串"定长"地插入换行符?
不知道怎么描述好,给个例子吧,
给定一个字符串,可能包括中英文数字特殊符号等,比如
“啊啊啊啊啊啊啊aaaaaaaaaaaaaa啊啊啊aaaaaaaa啊啊啊啊啊啊啊”

要求变成
“啊啊啊啊啊啊啊\naaaaaaaaaaaaaa\n啊啊啊aaaaaaaa\n啊啊啊啊啊啊啊”

使它能够以一定的长度来换行,如下:(注意是定长,不是定字数)

啊啊啊啊啊啊啊
aaaaaaaaaaaaaa
啊啊啊aaaaaaaa
啊啊啊啊啊啊啊

不用代码,给个思路就行,解决了立刻结贴给分!

------解决方案--------------------
http://www.java2000.net/viewthread.jsp?tid=2519
------解决方案--------------------
按字符數分
一個漢字是多少字符
一個字母是多少字符
------解决方案--------------------
用SUBSTR按一定度取字符串,在拼接起来即可了!!
------解决方案--------------------
你可以求出给定字符串中各个最大子串,在每一个字串中插入特定字符
同样,老紫竹的方法也可以
------解决方案--------------------
把原串按长度拆分,然后每个子串尾部添加\n,然后拼起来
------解决方案--------------------
Web 还是 Swing/AWT ?
------解决方案--------------------
如果你是输入框输入的(输入的时候,你在什么地方按回车),然后用label 来显示的话,它就是以什么形式显示的
用以下代码:
string s = " ";
s = Request.Form["tbtext"].Replace(" ", " ");
s = Request.Form["tbtext"].Replace('\n'.ToString(), "<br>");
label.text=s;
------解决方案--------------------
我试过,FF3可以自动换行,楼主还是把代码贴出来吧,好用来测试。用 CSS 应该可以解决。
------解决方案--------------------
substring();就可以了.
------解决方案--------------------
java中一个汉字也可疑定义为char
------解决方案--------------------
探讨
引用:
http://www.java2000.net/viewthread.jsp?tid=2519


基本符合要求。。

引用:
按字符數分
一個漢字是多少字符
一個字母是多少字符


这个思路未免也太简单明了了吧。。

引用:
用SUBSTR按一定度取字符串,在拼接起来即可了!!


这个不行吧,按的是字数,不是字长,一个汉字的长度显然比一个字母长

------解决方案--------------------
一个汉字2个char吧

把字符串存到字符数组里?
然后...
------解决方案--------------------
Java code
public class Test {

    public static void main(String[] args) {
        String str = "啊啊啊啊啊啊啊aaaaaaaaaaaaaa啊啊啊aaaaaaaa啊啊啊啊啊啊啊" +
                "使它能够以一定的长度来换行,如下:(注意是定长,不是定字数)";
        str = toMultiLine(str, 16);
        System.out.println(str);
    }

    public static String toMultiLine(String str, int len) {
        char[] chs = str.toCharArray();
        StringBuffer sb = new StringBuffer();
        for(int i = 0, sum = 0; i < chs.length; i++) {
            sum += chs[i] < 0xff ? 1 : 2;
            sb.append(chs[i]);
            if(sum >= len) {
                sum = 0;
                sb.append("\n");
            }
        }
        return sb.toString();
    }
}

------解决方案--------------------
17楼的方法不错,学习了~
------解决方案--------------------
不过1个中文是占2个字节吧,和char一样呢~
------解决方案--------------------
先转换成byte
一个汉字占四个字节。一个字母占两字节的方式。就可以了
------解决方案--------------------
我认为换成 byte 不是一个好的方法,因为汉字在 GBK 时采用两个字节进行编码,
而在 UTF-8 时至少得采用三个字节进行编码。