2013-03-25 171 views
-3

我想將一個HashSet轉換爲逗號分隔的字符串 但問題是,我在字符串的末尾也顯示了一個額外的逗號。 請告訴我如何刪除字符串末尾的額外逗號。刪除字符串末尾的逗號

import java.util.HashSet; 
import java.util.Set; 

public class Test { 

    private static Set<String> symbolsSet = new HashSet<String>(); 

    static { 

     symbolsSet.add("Q1!GO1"); 
     symbolsSet.add("Q2!GO2"); 
     symbolsSet.add("Q3!GO3"); 

    } 

    public static void main(String args[]) { 
     String[] a = symbolsSet.toArray(new String[0]); 
     StringBuffer sb = new StringBuffer(); 
     for (int i = 0; i < a.length; i++) { 
      sb.append(a[i] + ","); 
     } 
     System.out.println(sb.toString()); 

    } 

} 

輸出:

Q3!GOO3,Q2!GO2,Q1!GO1, 
+0

順便說一句,'Q3 GOO3靜態方法做, Q2!GO2,Q1!GO1,'不是您應該從程序中獲得的輸出。 – Maroun 2013-03-25 11:37:27

回答

3

做這樣

for (int i = 0; i < a.length - 1; i++) { 
    sb.append(a[i] + ","); 
} 

sb.append(a[a.length - 1]); 
0
String str = sb.toString().substring(0, sb.toString().length()-1); 

或追加僅如果不是最後一個元素

for (int i = 0; i < a.length; i++) { 
    if (i > 0) { 
     sb.append(","); 
    } 
    sb.append(a[i]); 
} 
2

有很多方法可以做到這一點,下面是一個使用String#replaceAll()

正則表達式的解決方案
String s= "abc,"; 
s = s.replaceAll(",$", ""); 
3

嘗試用:

for (int i = 0; i < a.length; i++) { 
    if (i > 0) { 
     sb.append(","); 
    } 
    sb.append(a[i]); 
} 
0
public static void main(String args[]) { 
    String[] a = symbolsSet.toArray(new String[0]); 
    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < a.length-1; i++) { 
     //append until the last with comma 
     sb.append(a[i] + ","); 
    } 
    //append the last without comma 
    sb.append(a[a.length-1]); 
    System.out.println(sb.toString()); 

} 
0

試試這個:

for (int i = 0; i < a.length; i++) { 
     if(i == a.length - 1) { 
      sb.append(a[i]); // Last element. Dont append comma to it 
     } else { 
     sb.append(a[i] + ","); // Append comma to it. Not a last element 
     } 
    } 
    System.out.println(sb.toString()); 
1

在您指定的方案String.lastIndexOf方法是非常有用的。

String withComma= sb.toString(); 
String strWithoutLastComma = withComma.substring(0,withComma.lastIndexOf(",")); 
System.out.println(strWithoutLastComma); 
0
public static void main(String args[]) 
{ 
    String[] a = symbolsSet.toArray(new String[0]); 

    StringBuffer sb = new StringBuffer(); 

    for (int i = 0; i < a.length; i++) 
    { 
     sb.append(a[i] + ","); 
    } 

    System.out.println(sb.toString().substring(0, sb.toString().length - 1)); 

} 

OR

public static void main(String args[]) 
{ 
    String[] a = symbolsSet.toArray(new String[0]); 

    StringBuffer sb = new StringBuffer(); 

    for (int i = 0; i < a.length; i++) 
    { 
     sb.append(a[i]); 

     if(a != a.length - 1) 
     { 
      sb.append(","); 
     } 
    } 

    System.out.println(sb.toString()); 
} 
2
StringBuffer sb = new StringBuffer(); 
String separator = ""; 
for (int i = 0; i < a.length; i++) { 
    sb.append(separator).append(a[i]); 
    separator = ","; 
} 
0

試試這個,

for (int i = 0; i < a.length-1; i++) { 
     if(a.length-1!=i) 
      sb.append(a[i] + ","); 
     else 
     { 
      sb.append(a[i]); 
      break; 
     } 
} 
0

嘗試用這種

for (int i = 0; i < a.length; i++) { 
    if(i == a.length - 1) 
    { 
     sb.append(a[i]); 
    } else { 
     sb.append(a[i] + ","); 
    } 
} 
0

你可以發展自己的Separator類:

public class SimpleSeparator<T> { 
    private final String sepString; 
    boolean first = true; 

    public SimpleSeparator(final String sep) { 
    this.sepString = sep; 
    } 

    public String sep() { 
    // Return empty string first and then the separator on every subsequent invocation. 
    if (first) { 
     first = false; 
     return ""; 
    } 
    return sepString; 
    } 

    public static void main(String[] args) { 
    SimpleSeparator sep = new SimpleSeparator(","); 
    System.out.print("["); 
    for (int i = 0; i < 10; i++) { 
     System.out.print(sep.sep()+i); 
    } 
    System.out.print("]"); 
    } 

} 

有更多的負載,你可以用這個類是獨立的數組,集合,迭代器,iterables等