2011-03-18 110 views
2

我必須以String的形式打印列表值。但是我在列表中阻止了[]。這是我的代碼。從arraylist中刪除[和]

List dbid=new ArrayList(); 
dbid.add(ar.getdbID()); 
String check=ar.getdbID().toString(); 

輸出上面的代碼:

[2, 3,4]

但我只是需要這樣的:

2,3,4
+0

我喜歡斯卡拉的原因之一。 – Nishant 2011-03-18 07:34:03

+0

ar.getdbID()返回什麼? – 2011-03-18 07:41:18

回答

0

您可以使用替代String類的方法來刪除這些括號,或者你可以使用普通的表達也(我猜正則表達式將在你的情況下矯枉過正)

+2

字符串替換是一個壞主意,因爲某些List的成員也可能包含方括號。發佈進程String的唯一安全方法是'string.substring(1,string.length() - 1)' – 2011-03-18 08:55:24

7

有 「在列表中的」 無[]。這只是包含這些字符的String表示(由toString()生成)。區分這兩件事很重要。

我會使用一個GuavaJoiner

Joiner.on(',').join(dbid); 

你可以手動實現:

StringBuilder b = new StringBuilder(); 
Iterator<?> it = dbid.iterator(); 
while (it.hasNext()) { 
    b.append(it.next()); 
    if (it.hasNext()) { 
    b.append(','); 
    } 
} 
String result = b.toString(); 
+0

不需要dbid.next()。toString(),append(Object)也是一樣。否則:+1 – 2011-03-18 07:36:49

+0

@Sean:true,「append(Object)」更好,因爲它避免了NPE對'null'值的影響。 – 2011-03-18 07:37:52

+0

Btw你的代碼不能編譯。看起來像清晨的代碼:-) – 2011-03-18 08:21:31

1

喜歡這個:

StringBuilder sb = new StringBuilder(); 
Iterator it = dbid.iterator(); 
if(it.hasNext()){ 
    sb.append(it.next()); 
    while(it.hasNext()){ 
    sb.append(',').append(it.next()); 
    } 
} 
return sb.toString(); 
2

Apache StringUtils join method對這個非常有用的:

StringUtils.join(new String[] { "1", "2", "3"}, ","); 

這將返回字符串 「1,2,3」

+0

還有'join(Collection)'可能更合適,因爲他已經有了'List'。 – 2011-03-18 11:58:46

1

的toString()函數將僅僅是對象轉換成它的字符串形式。所以它將字符串數組作爲字符串打印出來。這就是爲什麼[]來了。

您必須執行以下操作才能獲得所需的結果。

List dbid=new ArrayList(); 
dbid.add(ar.getdbID()); 

String[] checks=ar.getdbID(); 
for(String check:checks) { 
    System.out.print(check+" "); 
} 
System.out.print("\n"); 

希望你明白這個用法。

1
 String pattern = "[\\[\\]]"; 
     String result = yourstring.replaceAll(pattern, ""); 

這是迄今爲止我嘗試過的最好的選擇,它爲我工作。 在這種情況下,「yourstring」將是您的字符串對象。

1

我認爲最好是遍歷整個列表。這樣的事情會做的伎倆:

for(int i=0; i<yourList().size();i++){ 
       out.println(yourList().get(i)); 
      } 
+0

您能否詳細說明您的答案,並添加關於您提供的解決方案的更多描述? – abarisone 2015-06-17 06:33:02

+0

我同意在這種情況下做一個簡單的迭代 - 任何打印所有值的東西都必須遍歷整個列表。但是,您正在爲每個元素打印整行,而OP要求用逗號分隔。也許你可以添加到你的答案? – 2015-06-17 07:05:41