为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2019-11-02 10:44:42
我有以下代码:    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 containingmany many words andcharacters. Newlineswill be entered at spaces.上面的代码将字符串包装在每30个字符的下一个空格之后,但是我需要将字符串包装在每30个字符的前一个空格之后,就像第一行一样:A very long string第二行是containing many请给出一些适当的解决方案。
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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


查看完整回答
反对 回复 2019-11-02
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您可以尝试以下方法:


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)


查看完整回答
反对 回复 2019-11-02
  • 3 回答
  • 0 关注
  • 359 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信