我想在最后一次迭代中跳过“,”。
我想要输出名称,名称,名称
我现在得到的输出是名称,名称,名称,
StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
stringBuffer.append(cast.getName() + ", ");
}
答案 0 :(得分:2)
您可以在追加名称之前附加逗号。像这样:
StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
if (stringBuffer.length() != 0) {
stringBuffer.append(",");
}
stringBuffer.append(cast.getName());
}
答案 1 :(得分:1)
循环之后,只需删除尾随的逗号和空格:
stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
答案 2 :(得分:0)
首先插入分隔符更容易。但是,从变量追加分隔符:
StringBuffer stringBuffer = new StringBuffer();
String delim = "";
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
stringBuffer.append(delim);
stringBuffer.append(cast.getName());
delim = ",";
}
这样,您不会在第一个元素之前附加,
,而是在后续元素之前附加。
几点说明:
您几乎肯定想使用StringBuilder
代替StringBuffer
:
从发布JDK 5开始,[StringBuffer]补充了一个等效类,专为单个线程StringBuilder使用而设计。 StringBuilder类通常应优先于此使用,因为它支持所有相同的操作,但速度更快,因为它不执行同步。
答案 3 :(得分:0)
为什么重新发明轮子?使用Apache Commons中的 StringUtils.join 方法。要么 你可以从它的源代码grepcode-stringutils-join
中获得灵感答案 4 :(得分:0)
尝试
StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
stringBuffer.append(cast.getName());
stringBuffer.append(", ");
}
stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());