在每个循环中,我想在最后一次迭代中跳过“,”

时间:2017-05-20 15:01:48

标签: java android arrays android-layout

我想在最后一次迭代中跳过“,”。

我想要输出名称,名称,名称

我现在得到的输出是名称,名称,名称,

StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
    stringBuffer.append(cast.getName() + ", ");
}

5 个答案:

答案 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());