带有换行符的Java子字符串

时间:2018-08-08 06:23:04

标签: java

假设我有一个字符串:

String pers = "PROCESS / PROGRAM / PROJECT / SERVICE DELIVERY";

当字符串的长度达到30时,如何换行?因此它将导致:

过程/程序/项目/

服务交付

我的尝试

String pers = "PROCESS / PROGRAM / PROJECT / SERVICE DELIVERY";
if (pers.length() > 30) {
  pers = pers.substring(0, 30) + "\n" + pers.substring(30, pers.length());
}

它在浏览器的控制台上返回Uncaught SyntaxError: Invalid or unexpected token。请帮忙。

3 个答案:

答案 0 :(得分:1)

您可以使用类似的东西:

String pers = "PROCESS / PROGRAM / PROJECT / SERVICE DELIVERY";
String formattedString = pers.replaceAll("(.{30})", "$1\n");

以上内容应将30个字符替换为匹配的字符,再加上换行符。

答案 1 :(得分:0)

使用StringBuilder 可能是一种更轻松的字符串操作方式。您也可以使用String Builder尝试此操作。

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());

如果您了解Regular Expressions,那么这是最好和最简单的方法:-

String str = "....";
String parsedStr = str.replaceAll("(.{30})", "$1\n");

这将用相同的30个字符替换每30个字符,并在末尾添加新行。

答案 2 :(得分:0)

尝试这个:

public ArrayList gecStringFromStringByNumberOfChars(String str, int numberOfChars) {

int numberOfLine = str.length() / numberOfChars;
int offsets = str.length() % numberOfChars;
ArrayList<String> result = new ArrayList<>();
for (int i = 0; i < numberOfLine; i++) {
    result.add(str.substring(i * numberOfChars, i * numberOfChars + numberOfChars));
}
if (offsets > 0) {
    result.add(str.substring(str.length() - offsets, str.length()));
}
return result;
}

在代码中将其称为gecStringFromStringByNumberOfChars(pers,30)