[英]In for each loop i want to skip “, ” in last iteration
我想在上次迭代中跳過打印“,”。
我想要像姓名、姓名、姓名這樣的輸出
現在我得到的輸出是姓名,姓名,姓名,
StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
stringBuffer.append(cast.getName() + ", ");
}
您可以在附加名稱之前附加逗號。 像這樣:
StringBuffer stringBuffer = new StringBuffer();
for(MovieModel.Cast cast : movieModelList.get(position).getCastList()){
if (stringBuffer.length() != 0) {
stringBuffer.append(",");
}
stringBuffer.append(cast.getName());
}
為什么要重新發明輪子? 使用 Apache Commons 中的StringUtils.join方法。 或者你可以從它的源代碼commons-lang-sources 中激發(復制+修改)
// copied from https://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons/lang3/StringUtils.html
public static String join(final Iterator<?> iterator, final String separator) {
// handle null, zero and one elements before building a buffer
if (iterator == null) {
return null;
}
if (!iterator.hasNext()) {
return EMPTY;
}
final Object first = iterator.next();
if (!iterator.hasNext()) {
return Objects.toString(first, "");
}
// two or more elements
final StringBuilder buf = new StringBuilder(STRING_BUILDER_SIZE); // Java default is 16, probably too small
if (first != null) {
buf.append(first);
}
while (iterator.hasNext()) {
if (separator != null) {
buf.append(separator);
}
final Object obj = iterator.next();
if (obj != null) {
buf.append(obj);
}
}
return buf.toString();
}
在循環之后,只需刪除結尾的逗號和空格:
stringBuffer.delete(stringBuffer.length() - 2, stringBuffer.length());
先插入分隔符更容易。 但是,從變量附加分隔符:
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 類,因為它支持所有相同的操作,但速度更快,因為它不執行同步。
嘗試
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());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.