2017-06-28 8 views
1
List<String> solList = new ArrayList<String>(); 
solList.add("num1"); 
solList.add("num2"); 

StringBuilder result = new StringBuilder(); 
for (String a : solList) 
{ 
result.append(a).append(", "); 
} 

String withoutLastComma = result.substring(0, result.length() - ", 
".length()); 
System.err.println(withoutLastComma); 

Ich möchte das letzte Komma entfernen, ich benutze Substring, wie kann ich diesen Code besser werden?Wie entferne ich letzte Symbole?

Verwenden Sie String-Dienstprogrammmethoden wie "StringUtil.join" zum Verketten von Elementen in einem Array oder einem Auflistungsobjekt. Konsultieren Sie den "StringUtil.join" Eintrag der "StringUtil API".

Zum Beispiel: StringUtils.join(["e", "f", "g"], "--") // => "e--f--g

+0

Wenn Sie wollen einfach nur Kommas hinzufügen möchten, eine einfache for-Schleife mit einer Länge verwenden -2 – Sagar

+3

Sie können mit allem, was zu tun [ 'String.join'] (http : //docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.Iterable-) – ajb

+0

Sie können einfach 'result.setLength (result.length() - 1) '. Oder, anstatt die einfache 'for'-Schleife zu verwenden, können Sie die' solList.iterator() 'und Schleife über sie" manuell "(' while (iterator.hasNext()) {... '), und das lässt Sie überprüfen innerhalb der Schleife, ob es ein nächstes Element gibt - also können Sie das Komma einfach nicht hinzufügen, wenn Sie das letzte Element sind. (Oder, wie ajb darauf hingewiesen hat, verwenden Sie den Bibliotheksaufruf, der dies für Sie tut.) – yshavit

Antwort

4

Unten ist eine der Art und Weisen Sie durch Kommata getrennte Liste zu bekommen:

StringBuilder result = new StringBuilder(); 
int size = 0; 
if(solList!=null && (size=solList.size())>0) 
{ 
    result.append(solList.get(0)); 
    for (int i=1;i<size;i++) 
    { 
     result.append(", ").append(solList.get(i)); 
    } 
} 
+1

Der einzige Fehler ist, dass es keine leeren Listen behandelt. – ajb

+0

Danke für Ihre Kommentare –

+1

Patchen Sie es mit einem 'if (! SolList.isEmpty())', und machen Sie es für leere Listen arbeiten. Es ist keine sehr schöne Lösung, aber es funktioniert. –

0

Es gibt eine Reihe von Möglichkeiten, dies zu erreichen. Java 8 stellt bereits eine join-Methode in String bereit, die Strings in einer Liste oder einem Array mit einer festen Zeichenfolge zwischen jedem Elementpaar verbindet.

Hier ist ein anderer Weg. Ich bin auch dies als eine Antwort, weil es eine nützliche Idiom in anderen Array/Liste Traversal Fällen ist nicht unbedingt Strings und Separatoren beteiligt: ​​

StringBuilder result = new StringBuilder(); 
boolean first = true; 
for (String a : solList) 
{ 
    if (!first) { 
     result.append(", "); 
    } 
    result.append(a); 
    first = false; 
} 

Ich würde es hier nicht verwenden, aber dieses Muster kommt in vielen Zusammenhängen nach oben .

Das funktioniert im Prinzip genauso wie die Antwort von denis, nur etwas anders ausgedrückt.

0

Liste kommagetrennte StringUsing java 8 Siehe String.join()

Logik 1:

import java.util.Arrays; 
import java.util.List; 

public class TestApp2 { 

    public static void main(String[] args) { 

     List<String> list = Arrays.asList("A", "B", "C", "D"); 

     String result = String.join(",", list); 
     System.out.println(result); 
    } 

} 

OutPut:

A,B,C,D 

Logic 2:

Ein StringJoiner kann verwendet werden, um mit Collectors.joining (CharSequence) eine formatierte Ausgabe aus einem Stream zu erstellen. Zum Beispiel:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4); 
String commaSeparatedNumbers = numbers.stream() 
    .map(i -> i.toString()) 
    .collect(Collectors.joining(", ")); 

OutPut:

1,2,3,4 
Verwandte Themen