2015-10-15 205 views
-1

這裏是我的一個字符串存儲和從列表中讀取代碼:如何刪除我的字符串中的額外逗號?

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 

for (String s : list) 
{ 
    listString += s + ", "; 
} 

System.out.println(listString); 

它是在結尾處添加額外的逗號,我怎麼能刪除,做的代碼行的最低數量。請幫忙!

+0

到底會不會增加任何逗號。 –

+2

使用['StringJoiner'](https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html) – MadProgrammer

回答

3

的Java 8有一個不錯的新StringJoiner類,只是爲這個...

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 
StringJoiner sj = new StringJoiner(", "); 
for (String s : list) { 
    sj.add(s); 
} 
listString = sj.toString(); 
System.out.println(listString); 

如果你不夠幸運,使用Java 8是哪些輸出

one, two, three 

(我覺得你的痛苦),那麼你可以使用StringBuilder,並從最後刪除最後兩個字符,如...

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 
StringBuilder sb = new StringBuilder(64); 
for (String s : list) { 
    sb.append(s).append(", "); 
} 
listString = sb.delete(sb.length() - 2, sb.length()).toString(); 
System.out.println(listString); 

現在,很明顯,你應該檢查,看看是否造成StringBuilder的長度足夠長(有內容)做刪除過,但我會離開,你;)

3

試試這個:

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

System.out.println(list.toString().replaceAll("\\]|\\[", "")); 

輸出:

one, two, three 
+0

'System.out.println(list);'也給出相同的輸出。 –

0
ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 

for (String s : list) 
{ 
    listString += ", " + s; 
} 

System.out.println(listString.replaceFirst(",","")); 

您可以使用上面的代碼。在開始處附加逗號,然後用空白字符串替換第一個逗號。

+0

我認爲你應該用「」替換「」,否則在開始時會有額外的空間 –

2

作爲StringJoiner和其他類的替代方法,您也可以使用第一個元素初始化listString,在下一個元素前添加逗號並在索引1處開始迭代。您不能再使用該foreach。

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 
String listString = list.get(0); 

for (int i = 1;i<list.size();++i) { 
    listString += ", " + list.get(i); 
} 

System.out.println(listString); 
0

這是一個簡單的解決方案。

if (list.endsWith(",")) { 
    list= list.substring(0, list.length() - 1); 
} 

希望它有效。

1

這工作:

listString = listString.substring(0, listString.length() - 2); 
System.out.println(listString); 
0

此前的Java 8:

StringBuilder listString = new StringBuilder(); 
for (String id : list){ 
     listString.append(id).append(","); 
} 
String result =listString.toString().replaceAll(",$", ""); 

正則表達式",$"是檢測最後一個逗號。

使用Java 8:

list.stream().collect(Collectors.joining(","));