597 Stimmen

Ein schneller und einfacher Weg, Array-Elemente mit einem Trennzeichen zu verbinden (das Gegenteil von Split) in Java

参照 Verwandte .NET-Fragen

Ich suche nach einer schnellen und einfachen Möglichkeit, genau das Gegenteil von Split zu tun zu tun, so dass es zu ["a","b","c"] zu werden "a,b,c"

Das Iterieren durch ein Array erfordert entweder das Hinzufügen einer Bedingung (wenn dies nicht das letzte Element ist, füge das Trennzeichen hinzu) oder die Verwendung von substring, um das letzte Trennzeichen zu entfernen.

Ich bin sicher, es gibt einen zertifizierten, effizienten Weg, dies zu tun (Apache Commons?)

Wie gehen Sie bei Ihren Projekten vor?

949voto

skiwi Punkte 62821

Mit Java 8 können Sie dies auf eine sehr saubere Weise tun:

String.join(delimiter, elements);

Dies funktioniert auf drei Arten:

1) direkte Angabe der Elemente

String joined1 = String.join(",", "a", "b", "c");

2) Verwendung von Arrays

String[] array = new String[] { "a", "b", "c" };
String joined2 = String.join(",", array);

3) Verwendung von Iterables

List<String> list = Arrays.asList(array);
String joined3 = String.join(",", list);

326voto

nmr Punkte 16230

Wenn Sie Android verwenden, können Sie TextUtils.join(delimiter, tokens)

119voto

nd. Punkte 8573

Ich bevorzuge Guave über Apache StringUtils für dieses spezielle Problem:

Joiner.on(separator).join(array)

Im Vergleich zu StringUtils hat die Joiner-API ein fließendes Design und ist etwas flexibler, z. B. null Elemente können übersprungen oder durch einen Platzhalter ersetzt werden. Auch, Joiner verfügt über eine Funktion zum Verbinden von Maps mit einem Trennzeichen zwischen Schlüssel und Wert.

113voto

coobird Punkte 155882

Apache Commons Lang hat in der Tat eine StringUtils.join Methode, die eine Verbindung zwischen String Arrays zusammen mit einem angegebenen Trennzeichen.

Zum Beispiel:

String[] s = new String[] {"a", "b", "c"};
String joined = StringUtils.join(s, ",");  // "a,b,c"

Ich vermute jedoch, dass es, wie Sie erwähnen, eine Art von bedingter oder Teilstring-Verarbeitung in der eigentlichen Implementierung der oben genannten Methode geben muss.

Wenn ich die String und keine anderen Gründe hätte, Commons Lang zu verwenden, würde ich wahrscheinlich meine eigenen entwickeln, um die Anzahl der Abhängigkeiten von externen Bibliotheken zu reduzieren.

54voto

Zedas Punkte 537

Eine schnelle und einfache Lösung ohne Einbindung von Drittanbietern.

public static String strJoin(String[] aArr, String sSep) {
    StringBuilder sbStr = new StringBuilder();
    for (int i = 0, il = aArr.length; i < il; i++) {
        if (i > 0)
            sbStr.append(sSep);
        sbStr.append(aArr[i]);
    }
    return sbStr.toString();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X