在Java中将多个字词后的字符串包装起来

我有以下代码:


    String s = "A very long string containing " +

                   "many many words and characters. " +

                   "Newlines will be entered at spaces.";


    StringBuilder sb = new StringBuilder(s);


    int i = 0;

    while ((i = sb.indexOf(" ", i + 20)) != -1) {

        sb.replace(i, i + 1, "\n");

    }


    System.out.println(sb.toString());

代码的输出为:


A very long string containing

many many words and

characters. Newlines

will be entered at spaces.

上面的代码将字符串包装在每30个字符的下一个空格之后,但是我需要将字符串包装在每30个字符的前一个空格之后,就像第一行一样:


A very long string


第二行是


containing many

请给出一些适当的解决方案。


翻阅古今
浏览 360回答 3
3回答

慕标琳琳

您可以使用Apache通用的 WordUtils.wrap()。

泛舟湖上清波郎朗

您可以尝试以下方法:public static String wrapString(String s, String deliminator, int length) {    String result = "";    int lastdelimPos = 0;    for (String token : s.split(" ", -1)) {        if (result.length() - lastdelimPos + token.length() > length) {            result = result + deliminator + token;            lastdelimPos = result.length() + 1;        }        else {            result += (result.isEmpty() ? "" : " ") + token;        }    }    return result;}调用为wrapString(“ asd xyz afz”,“ \ n”,5)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java