it-swarm.com.de

Drucken Sie Elemente aus einem Array mit einem Komma zwischen Elementen außer dem letzten Wort aus

Ich drucke Elemente aus einer Array-Liste aus, ich möchte ein Komma zwischen jedem Wort außer dem letzten Wort haben. Im Moment mache ich so: 

    for (String s : arrayListWords) {
         System.out.print(s + ", ");
    }

Wie Sie es verstehen, werden die Wörter wie folgt ausgedruckt: "Eins, Zwei, Drei, Vier", und das Problem ist das letzte Komma. Wie löse ich das? Alle Antworten sind dankbar!

Viele Grüße, Erica

13
Eri.

Drucken Sie das erste Word selbst aus, falls es existiert. Dann drucken Sie das Muster zuerst als Komma und dann als nächstes aus.

if (arrayListWords.length >= 1) {
    System.out.print(arrayListWords[0]);
}

// note that i starts at 1, since we already printed the element at index 0
for (int i = 1; i < arrayListWords.length, i++) { 
     System.out.print(", " + arrayListWords[i]);
}

Mit einer List können Sie eine Iterator

// assume String
Iterator<String> it = arrayListWords.iterator();
if (it.hasNext()) {
    System.out.print(it.next());
}
while (it.hasNext()) {
    System.out.print(", " + it.next());
}
23

Ich würde es so schreiben:

String separator = "";  // separator here is your ","

for (String s : arrayListWords) {
    System.out.print(separator + s);
    separator = ",";
}

Wenn arrayListWords zwei Wörter hat, sollte es ausgegeben werden A, B 

13
Mav

Java 8 Streams verwenden:

Stream.of(arrayListWords).collect(Collectors.joining(", "));
7
Camilo Silva

Während der Iteration können Sie den String s an die StringBuilder anhängen und am Ende können Sie die letzten 2 Zeichen löschen, was ein zusätzlicher , und ein Leerzeichen (res.length() -2)

StringBuilder res = new StringBuilder();
for (String s : arrayListWords) {
    res.append(s).append(", ");
}
System.out.println(res.deleteCharAt(res.length()-2).toString());
3
sanbhat
StringJoiner str = new StringJoiner(", ");
str.add("Aplha").add("Beta").add("Gamma");

String result = str.toString();
System.out.println("The result is: " + result);

Die Ausgabe: .___. Das Ergebnis ist: Alpha, Beta, Gamma

3
Asparuh

Sie können eine Standardfunktion im Java.util-Paket verwenden und die Anführungszeichen am Anfang und Ende entfernen.

String str = Java.util.Arrays.toString(arrayListWords);
str = str.substring(1,str.length()-1);
System.out.println(str);
1
akkerman

Mit Java 8 ist es viel einfacher geworden, keine Drittanbieter - 

final List<String> words = Arrays.asList("one", "two", "three", "four");
String wordsAsString = words.stream().reduce((w1, w2) -> w1 + "," + w2).get();
System.out.println(wordsAsString);
0
Lital Kolog

Sie können eine Iterator für die List verwenden, um zu prüfen, ob weitere Elemente vorhanden sind.

Sie können das Komma nur dann anhängen, wenn das aktuelle Element nicht das letzte Element ist.

public static void main(String[] args) throws Exception {
    final List<String> words = Arrays.asList(new String[]{"one", "two", "three", "four"});

    final Iterator<String> wordIter = words.iterator();
    final StringBuilder out = new StringBuilder();
    while (wordIter.hasNext()) {
        out.append(wordIter.next());
        if (wordIter.hasNext()) {
            out.append(",");
        }
    }
    System.out.println(out.toString());
}

Es ist jedoch viel einfacher, eine Drittanbieter-Bibliothek wie Guava zu verwenden, um dies für Sie zu tun. Der Code wird dann zu:

public static void main(String[] args) throws Exception {
    final List<String> words = Arrays.asList(new String[]{"one", "two", "three", "four"});
    System.out.println(Joiner.on(",").join(words));
}
0

Sie können es versuchen

    List<String> listWords= Arrays.asList(arrayListWords); // convert array to List
    StringBuilder sb=new StringBuilder();
    sb.append(listWords);
    System.out.println(sb.toString().replaceAll("\\[|\\]",""));

Dies ist möglicherweise die effizienteste Methode für durch Kommas getrennte Zeichenfolge unter Verwendung von Best Practices und keine "Wenn" -Kontrollen, keine unbekannten Bibliotheken und StringBuilder. Dies ist die beste Methode zum Verketten von Zeichenfolgen.

Wenn Sie auch eine Variable "size" verwenden, werden die Aufrufe der .size()-Methode reduziert.

Für diejenigen, die String[] verwenden:

StringBuilder str = new StringBuilder();
String[] strArr = {"one", "two", "three", "four"};
int size = strArr.length;
str.append(strArr[0]);
for (int i = 1; i < size; i++) {
    str.append(",").append(strArr[i]);
}
System.out.println(str.toString());

Für diejenigen, die ArrayList<String> verwenden:

StringBuilder str = new StringBuilder();
List<String> strArr = Arrays.asList(new String[]{"one", "two", "three", "four"});
int size = strArr.size();
str.append(strArr.get(0));
for (int i = 1; i < size; i++) {
    str.append(",").append(strArr.get(i));
}
System.out.println(str.toString());

Beide ergeben: one,two,three,four

0
lewdev

Verwenden Sie einfach die toString () -Methode.

String s = arrayListWords.toString();
System.out.println(s);

//This will print it like this: "[one, two, three, four]"
//If you want to remove the brackets you can do so easily. Just change the way you print.
0
Rohit

Ich komme mit: 

String join = "";

// solution 1
List<String> strList = Arrays.asList(new String[] {"1", "2", "3"});
for(String s: strList) {
   int idx = strList.indexOf(s);
   join += (idx == strList.size()-1) ? s : s + ",";
}
System.out.println(join);

// solution 2 
join = "";
for(String s: strList) {    
   join += s + ",";
}

join = join.substring(0, join.length()-1);
System.out.println(join);

// solution 3  
join = "";
int count = 0;
for(String s: strList) {    
   join += (count == strlist.size()-1) ? s: s + ",";
   count++;
}

System.out.println(join);

natürlich können wir StringBuilder verwenden, aber ich mag @Mav von allen Lösungen, die effizienter und sauberer sind. 

0
Simple-Solution