Kev*_*ich 3 java string newline
我有一大块文本(字符串中有200多个字符),需要在30个字符后的下一个空格处插入新行,以保留单词.这是我现在拥有的(不工作):
String rawInfo = front.getItemInfo(name);
String info = "";
int begin = 0;
for(int l=30;(l+30)<rawInfo.length();l+=30) {
while(rawInfo.charAt(l)!=' ')
l++;
info += rawInfo.substring(begin, l) + "\n";
begin = l+1;
if((l+30)>=(rawInfo.length()))
info += rawInfo.substring(begin, rawInfo.length());
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助
coo*_*ird 18
正如kdgregory所建议的,使用a StringBuilder可能是一种更简单的方法来处理字符串操作.
由于我不太确定插入换行符之前的字符数是30个字符之前还是之后的字,我选择在30个字符后面找到该字,因为实现可能更容易.
方法是找到" "在使用当前字符后至少30个字符的实例StringBuilder.indexOf.当出现空格时,\n插入a StringBuilder.insert.
(我们假设换行符在\n这里 - 可以检索当前环境中使用的实际行分隔符System.getProperty("line.separator");).
这是一个例子:
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 + 30)) != -1) {
sb.replace(i, i + 1, "\n");
}
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)
结果:
A very long string containing many many words and characters. Newlines will.
我应该补充一点,上面的代码还没有测试过,除了String我在代码中显示的例子.如果它在某些情况下不起作用,那就太不足为奇了.
编辑
示例代码中的while循环已被循环而不是for循环替换,这在本示例中不太合适.
此外,该StringBuilder.insert方法被该方法所取代StringBuilder.replace,正如Kevin Stich在评论中提到的那样,使用该replace方法而不是insert获得所需的行为.