【发布时间】:2021-12-12 12:08:34
【问题描述】:
我需要用逗号加入一个字符串列表。但我也有行长的限制。
例如列表I need to join a list of strings with commas 应该变成:
I, need, to, join, a, \n list, of, strings, with, \n commas.
我已经为此实现了一个方法:
private static String joinLabels(List<String> strings) {
int rowLengthCounter = 0;
StringBuilder result = new StringBuilder();
for (String str : strings) {
rowLengthCounter += str.length();
if (rowLengthCounter > 40) {
result.append("\n");
rowLengthCounter = str.length();
}
result.append(str);
result.append(", ");
}
return result.substring(0, result.lastIndexOf(", "));
}
而且它有效。但也许存在简单的方法,比如 String.join 用指定的分隔符连接字符串,或者流 API。感谢您的帮助。
【问题讨论】:
-
现有 Java SE 类的形式没有简单的方法可以做到这一点。使用
Stream会很复杂......这违背了使用Stream的目的。 -
您的实现不计算分隔符的字符,此外,限制 40 对于您预期的示例输出来说太大了。这是不一致的。示例的期望可以通过
String.join(", ", strings).replaceAll("\\G(?=.{25}).{1,23}, ", "$0\n")来实现
标签: java string java-stream