当你必须遍历一个集合并用分隔符分隔每个数据的字符串时,你总是以一个额外的分隔符结尾,例如
for (String serverId : serverIds) {
sb.append(serverId);
sb.append(",");
}
如下所示:serverId_1,serverId_2,serverId_3,
我想删除StringBuilder中的最后一个字符(不转换它,因为在这个循环之后我仍然需要它)。
发布于 2010-08-03 17:49:47
其他人已经指出了deleteCharAt
方法,但这里有另一种替代方法:
String prefix = "";
for (String serverId : serverIds) {
sb.append(prefix);
prefix = ",";
sb.append(serverId);
}
从Java8开始,StringJoiner
是标准JRE的一部分。
发布于 2010-08-03 17:47:33
另一个简单的解决方案是:
sb.setLength(sb.length() - 1);
更复杂的解决方案:
上面的解决方案假设sb.length() > 0
...即存在要移除的“最后一个字符”。如果你不能做这个假设,并且/或者你不能处理假设不正确而导致的异常,那么首先检查StringBuilder的长度;
// 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));
发布于 2010-08-03 17:43:27
if(sb.length() > 0){
sb.deleteCharAt(sb.length() - 1);
}
https://stackoverflow.com/questions/3395286
复制相似问题