2013-03-25 173 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等