2013-03-25 3 views
-3

Я пытаюсь преобразовать HashSet в разделенный запятыми разделитель String Но проблема в том, что я получаю дополнительную запятую в конце строки также, как показано. Скажите, пожалуйста, как удалить эту дополнительную запятую в конце строки.Удаление запятой в конце строки

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

BTW, 'Q3 GOO3, Q2! GO2, Q1! GO1, 'не вывод, который вы должны получить из своей программы. – Maroun

ответ

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)); 

} 

ИЛИ

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("]"); 
    } 

} 

Там в нагрузку больше вы можете сделать с этим классом со статическими методами, разделяющие массивы, коллекции, итераторы, итерируемыми и т.д.

Смежные вопросы