2011-11-01 11 views
5

Jak wiesz, metody toString(), zwany na wyjściu Wektor tenZastąp toString usunąć przestrzenie między elementami

[foo, bar, item, item4] 

Jest to dość proste, ale, jak mogę dostać to zamiast (usuwanie spacji między elementami)?

[foo,bar,item,item4] 

Dziękuję wszystko

EDIT: nom.toString Powrót() zastąpić (””, "");. nie jest rozwiązaniem!

+0

Chcesz usunąć ** WSZYSTKIE ** przestrzenie lub tylko przestrzeń między elementami? To jest, jaki byłby pożądany wynik dla "[John Smith, Jane Doe, Will Williams]"? –

Odpowiedz

4

Owiń klasa Vector i zastąpić toString.

import java.util.*; 
class AwesomeVector<E> extends Vector<E> { 

    public String toString() { 
     StringBuilder sb = new StringBuilder(); 
     sb.append("["); 
     for(int i = 0; i < size(); i++) { 
      if(i != 0) sb.append(","); 
      sb.append(get(i)); 
     } 
     sb.append("]"); 
     return sb.toString(); 
    } 

    public static void main(String[] args) { 
     AwesomeVector<String> av = new AwesomeVector<String>(); 
     av.add("This"); 
     av.add("is"); 
     av.add("a test"); 
     System.out.println(av.toString()); 
    } 

} 


C:\Documents and Settings\glowcoder\My Documents>javac AwesomeVector.java 

C:\Documents and Settings\glowcoder\My Documents>java AwesomeVector 
[This,is,a test] 
2

Wystarczy rozszerzyć klasę Vector i zastąpić toString()

@Override 
public String toString() { 
    StringBuffer sb = new Stringbuffer("["); 

    for(int i=0; i < elementCount ;i++){ 
     sb.append(elementData.toString()); 
     if(i!= elementCount -1){ 
      sb.append(","); 
     } 
    } 

    sb.append("]"); 
    return sb.toString(); 
} 
+0

return nom.toString(). Replace ("", ""); działa dobrze, ale co, jeśli jednym z moich elementów jest "Jestem przestrzenią" ... Wiem, że muszę to zmienić, ale nie mogę tego naprawić. – user1023021

+0

pod warunkiem lepszej implementacji –

3

Zastępowanie ma sens wyłącznie w przypadku podklasy Vector.

Jeśli tak, to można użyć Apache Commons Lang na StringUtils.join następująco:

@Override 
public String toString() { 
    return "[" + StringUtils.join(this, ",") + "]"; 
} 

Jeśli chcesz zatrzymać się w zwykły Java, glowcoder ma najlepszą odpowiedź.

+0

Podoba mi się pomysł wykorzystania Apache Commons do robienia rzeczy dla Ciebie, tak jak z reguły jest to miłe. – corsiKa

2

Jeżeli jesteś pewien, że nie masz ", " w swoich elementów, można spróbować:

System.out.println(v.toString().replace(", ", ",")); 
Powiązane problemy