首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否删除StringBuilder的最后一个字符?

是否删除StringBuilder的最后一个字符?
EN

Stack Overflow用户
提问于 2010-08-03 17:41:28
回答 16查看 390K关注 0票数 487

当你必须遍历一个集合并用分隔符分隔每个数据的字符串时,你总是以一个额外的分隔符结尾,例如

代码语言:javascript
复制
for (String serverId : serverIds) {
  sb.append(serverId);
   sb.append(",");
}

如下所示:serverId_1,serverId_2,serverId_3,

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

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2010-08-03 17:49:47

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

代码语言:javascript
复制
String prefix = "";
for (String serverId : serverIds) {
  sb.append(prefix);
  prefix = ",";
  sb.append(serverId);
}

或者,使用Guava中的Joiner类:)

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

票数 709
EN

Stack Overflow用户

发布于 2010-08-03 17:47:33

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

代码语言:javascript
复制
sb.setLength(sb.length() - 1);

更复杂的解决方案:

上面的解决方案假设sb.length() > 0 ...即存在要移除的“最后一个字符”。如果你不能做这个假设,并且/或者你不能处理假设不正确而导致的异常,那么首先检查StringBuilder的长度;

代码语言:javascript
复制
// Readable version
if (sb.length() > 0) {
   sb.setLength(sb.length() - 1);
}

代码语言:javascript
复制
// Concise but harder-to-read version of the above.
sb.setLength(Math.max(sb.length() - 1, 0));
票数 497
EN

Stack Overflow用户

发布于 2010-08-03 17:43:27

代码语言:javascript
复制
if(sb.length() > 0){
    sb.deleteCharAt(sb.length() - 1);
}
票数 207
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3395286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档