Konvertieren eines Strings in einen Zeichenstrom

1. Übersicht

Java 8 führte die Stream- API mit funktionsähnlichen Operationen zum Verarbeiten von Sequenzen ein. Wenn Sie mehr darüber lesen möchten, lesen Sie diesen Artikel.

In diesem kurzen Artikel erfahren Sie, wie Sie einen String in einen Stream aus einzelnen Zeichen konvertieren .

2. Konvertierung mit Zeichen ()

Die String- API hat eine neue Methode - chars () - mit der wir eine Instanz von S tream von einem String- Objekt erhalten können. Diese einfache API gibt eine Instanz von Int - Stream von dem Eingang String .

Einfach ausgedrückt enthält IntStream eine ganzzahlige Darstellung der Zeichen aus dem String- Objekt:

String testString = "String"; IntStream intStream = testString.chars();

Es ist möglich, mit der ganzzahligen Darstellung der Zeichen zu arbeiten, ohne sie in ihre Zeichenäquivalente umzuwandeln . Dies kann zu geringfügigen Leistungssteigerungen führen, da nicht jede Ganzzahl in ein Zeichenobjekt eingefügt werden muss.

Wenn wir jedoch die Zeichen zum Lesen anzeigen möchten, müssen wir die Ganzzahlen in die menschenfreundliche Zeichenform konvertieren :

Stream characterStream = testString.chars() .mapToObj(c -> (char) c);

3. Konvertierung mit codePoints ()

Alternativ können wir die codePoints () -Methode verwenden, um eine Instanz von IntStream aus einem String abzurufen . Der Vorteil dieser API besteht darin, dass zusätzliche Unicode-Zeichen effektiv verarbeitet werden können.

Zusätzliche Zeichen werden durch Unicode-Ersatzpaare dargestellt und zu einem einzigen Codepunkt zusammengeführt. Auf diese Weise können wir jedes Unicode-Symbol korrekt verarbeiten (und anzeigen):

IntStream intStream1 = testString.codePoints();

Wir müssen die zurück zur Karte IntStream zu - Stream es für Benutzer anzuzeigen:

Stream characterStream2 = testString.codePoints().mapToObj(c -> (char) c); 

4. Konvertierung in einen Stream einzelner Zeichenfolgen

Bisher konnten wir einen Strom von Charakteren erhalten. was passiert , wenn wir einen wollen Strom von einzelnen Zeichen String statt s?

Wie bereits weiter oben in diesem Artikel angegeben, verwenden wir entweder die Methoden codePoints () oder chars () , um eine Instanz von IntStream zu erhalten , die wir jetzt Stream zuordnen können .

Bei der Zuordnung werden zuerst die ganzzahligen Werte in ihre jeweiligen Zeichenäquivalente konvertiert.

Dann können wir String.valueOf () oder Character.toString () verwenden , um die Zeichen in ein String- Objekt zu konvertieren :

Stream stringStream = testString.codePoints() .mapToObj(c -> String.valueOf((char) c));

5. Schlussfolgerung

In diesem kurzen Tutorial lernen wir, einen Zeichenstrom aus einem String- Objekt abzurufen, indem wir entweder die Methoden codePoints () oder chars () aufrufen .

Dies ermöglicht es uns, die Stream- API voll auszunutzen, um Zeichen bequem und effektiv zu bearbeiten.

Wie immer finden Sie Code-Schnipsel auf GitHub.