2011-11-01 47 views
5

Như bạn đã biết, phương thức toString() kêu gọi một đầu ra Vector nàyOverride toString để loại bỏ khoảng trống giữa các yếu tố

[foo, bar, item, item4] 

này là khá cơ bản nhưng, làm thế nào tôi có thể có được điều này để thay thế (loại bỏ không gian trắng giữa các yếu tố)?

[foo,bar,item,item4] 

Cảm ơn tất cả các bạn

EDIT: trở về nom.toString() thay thế ("", "");. không phải là một giải pháp!

+0

Bạn có muốn loại bỏ ** TẤT CẢ ** khoảng trống hoặc chỉ không gian giữa các yếu tố? Đó là, đầu ra mong muốn của bạn cho '[John Smith, Jane Doe, Will Williams] 'là gì? –

Trả lời

4

Bọc lớp vector của bạn và ghi đè 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

Chỉ cần mở rộng lớp Vector và ghi đè lên 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

trả về nom.toString(). Replace ("", ""); hoạt động tốt, nhưng nếu một trong những yếu tố của tôi là "Tôi là một không gian" ... Tôi biết rằng tôi phải ghi đè lên nó, nhưng tôi không thể quản lý để làm cho nó đúng. – user1023021

+0

cung cấp việc triển khai tốt hơn –

3

Ghi đè chỉ có ý nghĩa nếu bạn đang phân lớp Vector.

Nếu bạn đang có, sau đó bạn có thể sử dụng Apache Commons Lang StringUtils.join như sau:

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

Nếu bạn muốn ở lại đồng bằng Java, glowcoder có câu trả lời tốt nhất.

+0

Tôi thích ý tưởng tận dụng Apache Commons để làm mọi thứ cho bạn, cũng giống như một quy tắc chung rất hay. – corsiKa

2

Nếu bạn chắc chắn rằng bạn không có ", " trong các yếu tố, bạn có thể thử:

System.out.println(v.toString().replace(", ", ",")); 
Các vấn đề liên quan