Java 11 String API-Ergänzungen

Java 11 String API-Ergänzungen

1. Einführung

Java 11 fügte den häufig verwendetenString class einige nützliche APIs hinzu. In diesem Tutorial werden wir diese neuen APIs untersuchen und verwenden.

2. repeat()

Wie der Name schon sagt, wiederholt die Instanzmethode vonrepeat()den Zeichenfolgeninhalt.

It returns a string whose value is the concatenation of the string repeated n times, where n is passed as a parameter:

@Test
public void whenRepeatStringTwice_thenGetStringTwice() {
    String output = "La ".repeat(2) + "Land";

    is(output).equals("La La Land");
}

Zusätzlich gibtrepeat() eine leere Zeichenfolge zurück, wenn die Zeichenfolge leer ist oder die Anzahl Null ist.

3. strip () *

The strip() instance method returns a string with all leading and trailing whitespaces removed:

@Test
public void whenStripString_thenReturnStringWithoutWhitespaces() {
    is("\n\t  hello   \u2005".strip()).equals("hello");
}

Java 11 fügte außerdem die MethodenstripLeading() undstripTrailing() hinzu, die führende bzw. nachfolgende Leerzeichen verarbeiten.

3.1. Differenz zwischenstrip() undtrim()

strip*() bestimmt basierend aufCharacter.isWhitespace(), ob das Zeichen ein Leerzeichen ist oder nicht. Mit anderen Worten,it is aware of Unicode whitespace characters.

Dies unterscheidet sich vontrim(), bei dem Leerzeichen als jedes Zeichen definiert werden, das kleiner oder gleich dem Unicode-Leerzeichen (U + 0020) ist. Wenn wir im vorherigen Beispieltrim() verwenden, erhalten wir ein anderes Ergebnis:

@Test
public void whenTrimAdvanceString_thenReturnStringWithWhitespaces() {
    is("\n\t  hello   \u2005".trim()).equals("hello   \u2005");
}

Beachten Sie, wietrim() das führende Leerzeichen kürzen konnte, das nachfolgende Leerzeichen jedoch nicht. Dies liegt daran, dasstrim() keine Unicode-Leerzeichen kennt und daher ′ nicht als Leerzeichen betrachtet.

4. isBlank()

The isBlank() instance method returns true if the string is empty or contains only whitespace. Otherwise, it returns false:

@Test
public void whenBlankString_thenReturnTrue() {
    assertTrue("\n\t\u2005  ".isBlank());
}

In ähnlicher Weise kennt dieisBlank()-Methode Unicode-Leerzeichen, genau wiestrip().

5. lines()

The lines() instance method returns a Stream of lines extracted from the string, separated by line terminators:

@Test
public void whenMultilineString_thenReturnNonEmptyLineCount() {
    String multilineStr = "This is\n \n a multiline\n string.";

    long lineCount = multilineStr.lines()
      .filter(String::isBlank)
      .count();

    is(lineCount).equals(3L);
}

Ein Leitungsterminator ist einer der folgenden:“ ”,“ ”, oder“ ”.

Der Stream enthält Zeilen in der Reihenfolge, in der sie auftreten. Der Zeilenabschluss wird aus jeder Zeile entfernt.

Diese Methode solltesplit() vorgezogen werden, da sie eine bessere Leistung beim Unterbrechen von mehrzeiligen Eingaben bietet.

6. Fazit

In diesem kurzen Artikel haben wir die neuen String-APIs in Java 11 untersucht.

Schließlich können Code-Schnipselover on GitHub gefunden werden.