java - 如何摆脱 stringBuilder 末尾的尾随逗号和空格?

标签 java java-stream stringbuilder

我在字符串中缺少逗号时添加了一个逗号,并希望从字符串末尾删除逗号并从末尾的新行中删除额外的空格。

StringBuilder mssg = new StringBuilder();

if (hasError().size <=8){
hasError().keySet().stream().forEach(id ->{
mssg.append(id.toString() + ":");
hasError().get(id).stream.limit(8).forEach(error ->mssg.append(error.toString() + ", "))
mssg.append("\n"); // adding new line for each Id to show it's own error mssg
)}


error output: Missing xnameMissing ynameMissing xyzMissing abcMissing ab, cd or ef,
Id: Id1

所以我的代码 - 我添加了逗号分隔错误输出到字符串,所以 mssg 的输出将是

mssg 输出:Id1:缺少 xname、缺少 yname、缺少 xyz、缺少 abc、缺少 ab、cd 或 ef,

1个项目有多个缺失错误输出

Id1:Missing xname, Missing yname, Missing xyz, Missing abc, Missing ab, cd, or ef,
Id2:Missing yname, Missing ab, cd, or ef,
Id3:Missing xyz,
new line 

最佳答案

如果您只想从 StringBuilder 中删除最后 2 个字符:

sb.setLength(sb.length() - 2);

为了满足原始列表可能为空的情况:

sb.setLength(Math.max(0, sb.length() - 2));

但我认为更好的解决方案是一开始就不要将放错位置的分隔符放在那里;例如像这样构建字符串:

stream.limit(8).map(Object::toString).collect(Collectors.joining(", ")) 

关于java - 如何摆脱 stringBuilder 末尾的尾随逗号和空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59366377/

相关文章:

javascript - 如何在 StringBuilder 中替换 html 的脚本内容

java - 设置 EditText.setText() 会导致应用程序崩溃

java - 列表值对 BaseAdapter 类不可见

java - JPOS 何时禁用、释放和关闭打印机

java - 在这种情况下如何对列表进行流排序?

java 8 按不同计数分组

java - 将带条件的循环转换为流

Java 反射 : Get inner instantiated field

java - Eclipse 无法识别 StringBuilder?

java - 如何在 StringBuilder 中连接子字符串?