2017-06-28 43 views
1
List<String> solList = new ArrayList<String>(); 
solList.add("num1"); 
solList.add("num2"); 

StringBuilder result = new StringBuilder(); 
for (String a : solList) 
{ 
result.append(a).append(", "); 
} 

String withoutLastComma = result.substring(0, result.length() - ", 
".length()); 
System.err.println(withoutLastComma); 

我想刪除最後一個逗號,我使用substring,我該如何變得更好這個代碼?如何刪除最後的符號?

使用字符串實用程序方法(如「StringUtil.join」)來連接數組或集合對象中的元素。請參閱「StringUtil API的StringUtil.join」條目。

例如: StringUtils.join(["e", "f", "g"], "--") // => "e--f--g

+0

如果你只是想添加逗號,用一個簡單的for循環長度爲-2 – Sagar

+3

你可以做一切與['String.join'](HTTP ://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.Iterable-) – ajb

+0

你可以執行'result.setLength( result.length() - 1)'。或者,不要使用簡單的'for'循環,你可以得到'solList.iterator()'並且通過「手動」循環('while(iterator.hasNext()){...'),並且讓你在循環中檢查是否有下一個元素 - 所以如果你在最後一個元素,你可以不加這個逗號來開始。 (或者,正如ajb指出的那樣,使用庫函數爲你做這件事。) – yshavit

回答

4

以下是你可以得到逗號分隔的列表的方式之一:

StringBuilder result = new StringBuilder(); 
int size = 0; 
if(solList!=null && (size=solList.size())>0) 
{ 
    result.append(solList.get(0)); 
    for (int i=1;i<size;i++) 
    { 
     result.append(", ").append(solList.get(i)); 
    } 
} 
+1

唯一的缺陷是它不處理空列表。 – ajb

+0

感謝您的意見 –

+1

使用'if(!solList.isEmpty())'修補它,並使其適用於空列表。雖然這不是一個非常漂亮的解決方案,但它很有用。 –

0

有許多的方法來做到這一點。 Java 8已經在String中提供了一個join方法,該方法將在每對元素之間使用固定字符串的列表或數組中連接字符串。

這是另一種方法。我包括這作爲一個答案,因爲它是在其他陣列/列表遍歷的情況下有用習慣不一定涉及字符串和分隔符:

StringBuilder result = new StringBuilder(); 
boolean first = true; 
for (String a : solList) 
{ 
    if (!first) { 
     result.append(", "); 
    } 
    result.append(a); 
    first = false; 
} 

我不會在這裏使用它,但這種模式在很多情況下出現。

這基本上和丹尼斯的答案一樣,只是用稍微不同的方式表達。

0

列表以逗號分隔的字符串Using java 8 參見String.join()

邏輯1:

import java.util.Arrays; 
import java.util.List; 

public class TestApp2 { 

    public static void main(String[] args) { 

     List<String> list = Arrays.asList("A", "B", "C", "D"); 

     String result = String.join(",", list); 
     System.out.println(result); 
    } 

} 

輸出:

A,B,C,D 

邏輯2:

StringJoiner可用於使用Collectors.joining(CharSequence)從Stream創建格式化輸出。例如:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4); 
String commaSeparatedNumbers = numbers.stream() 
    .map(i -> i.toString()) 
    .collect(Collectors.joining(", ")); 

輸出:

1,2,3,4 
相關問題