我有以下代码: 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贡献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)
添加回答
举报
0/150
提交
取消