删除字符串生成器的最后一个字符?

2022-08-31 04:21:55

当您必须遍历一个集合并制作一个由分隔符分隔的每个数据的字符串时,您总是在末尾得到一个额外的分隔符,例如

for (String serverId : serverIds) {
  sb.append(serverId);
   sb.append(",");
}

给出类似的东西:serverId_1,serverId_2,serverId_3,

我想删除StringBuilder中的最后一个字符(不转换它,因为在此循环之后我仍然需要它)。


答案 1

其他人已经指出了这种方法,但这是另一种替代方法:deleteCharAt

String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  prefix = ",";
  sb.append(serverId);
}

或者,使用番石榴细木工类:)

从Java 8开始,StringJoiner是标准JRE的一部分。


答案 2

另一个简单的解决方案是:

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

更复杂的解决方案:

上述解决方案假设...即有一个“最后一个字符”要删除。如果您无法做出该假设,并且/或者您无法处理假设不正确时随之而来的异常,请先检查StringBuilder的长度;例如:sb.length() > 0

// Readable version
if (sb.length() > 0) {
   sb.setLength(sb.length() - 1);
}

// Concise but harder-to-read version of the above.
sb.setLength(Math.max(sb.length() - 1, 0));

推荐