루프가 마지막으로 반복되는지 확인하는 방법이 있습니까? 내 코드는 다음과 같습니다
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for(int i : array)
{
builder.append("" + i);
if(!lastiteration)
builder.append(",");
}
이제 마지막 반복에서 쉼표를 추가하고 싶지 않습니다. 이제 마지막 반복인지 확인하거나 for 루프 또는 외부 카운터를 사용하여 추적을 유지하고 있는지 확인할 수있는 방법이 있습니다.
답변
또 다른 대안은 i를 추가하기 전에 첫 번째 반복이 아닌 쉼표를 추가하는 것 입니다. (단 "" + i
,를 사용하지 마십시오 -실제로 연결을 원하지 않으며 StringBuilder에는 append (int) 오버로드가 완벽하게 좋습니다.)
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for (int i : array) {
if (builder.length() != 0) {
builder.append(",");
}
builder.append(i);
}
이것에 대한 좋은 점은 어떤 것으로도 작동한다는 Iterable
것입니다. 항상 색인을 생성 할 수는 없습니다. ( “쉼표를 추가하고 마지막에 제거”는 실제로 StringBuilder를 사용할 때 좋은 제안입니다. 그러나 스트림에 쓰는 것과 같은 작업에는 작동하지 않습니다. 그러나이 정확한 문제에 대한 최선의 방법 일 수 있습니다. )
답변
이를 수행하는 다른 방법 :
String delim = "";
for (int i : ints) {
sb.append(delim).append(i);
delim = ",";
}
업데이트 : Java 8의 경우 이제 수집기가 있습니다.
답변
항상 추가하는 것이 더 쉬울 수 있습니다. 그런 다음 루프를 완료하면 최종 캐릭터를 제거하십시오. 그런 식으로 조건을 줄입니다.
StringBuilder
의 deleteCharAt(int index)
색인을 사용하여를 사용할 수 있습니다length() - 1
답변
작업에 잘못된 도구를 사용하고있을 수 있습니다.
이것은 당신이하는 일보다 더 수동적이지만 조금 “오래된 학교”가 아니라면 더 우아합니다.
StringBuffer buffer = new StringBuffer();
Iterator iter = s.iterator();
while (iter.hasNext()) {
buffer.append(iter.next());
if (iter.hasNext()) {
buffer.append(delimiter);
}
}
답변
이것은 이 StackOverflow 질문 의 거의 반복입니다 . 원하는 것은 StringUtils 이며 join 메소드 를 호출하는 것입니다.
StringUtils.join(strArr, ',');
답변
다른 솔루션 (아마도 가장 효율적인)
int[] array = {1, 2, 3};
StringBuilder builder = new StringBuilder();
if (array.length != 0) {
builder.append(array[0]);
for (int i = 1; i < array.length; i++ )
{
builder.append(",");
builder.append(array[i]);
}
}
답변
간단하게 유지하고 표준 for 루프를 사용하십시오.
for(int i = 0 ; i < array.length ; i ++ ){
builder.append(array[i]);
if( i != array.length - 1 ){
builder.append(',');
}
}
또는 아파치 commons-lang StringUtils.join ()을 사용하십시오.
