当你必须遍历一个集合并用分隔符将每个数据组成一个字符串时,你总是会在最后得到一个额外的分隔符,例如:
for (String serverId : serverIds) {
sb.append(serverId);
sb.append(",");
}
给出类似serverId_1 serverId_2 serverId_3
我想删除StringBuilder中的最后一个字符(不转换它,因为在这个循环之后我仍然需要它)。
当你必须遍历一个集合并用分隔符将每个数据组成一个字符串时,你总是会在最后得到一个额外的分隔符,例如:
for (String serverId : serverIds) {
sb.append(serverId);
sb.append(",");
}
给出类似serverId_1 serverId_2 serverId_3
我想删除StringBuilder中的最后一个字符(不转换它,因为在这个循环之后我仍然需要它)。
当前回答
stringBuilder.Remove(stringBuilder.Length - 1, 1);
其他回答
另一种替代方法
for(String serverId : serverIds) {
sb.append(",");
sb.append(serverId);
}
sb.deleteCharAt(0);
其他人指出了deleteCharAt方法,但这里有另一种替代方法:
String prefix = "";
for (String serverId : serverIds) {
sb.append(prefix);
prefix = ",";
sb.append(serverId);
}
或者,使用来自Guava的Joiner类:)
从Java 8开始,StringJoiner是标准JRE的一部分。
这里有另一个解决方案:
for(String serverId : serverIds) {
sb.append(",");
sb.append(serverId);
}
String resultingString = "";
if ( sb.length() > 1 ) {
resultingString = sb.substring(1);
}
为了避免前缀的reinit(影响性能),使用TextUtils.isEmpty:
String prefix = "";
for (String item : list) {
sb.append(prefix);
if (TextUtils.isEmpty(prefix))
prefix = ",";
sb.append(item);
}
if(sb.length() > 0){
sb.deleteCharAt(sb.length() - 1);
}