Suchen in Java nach leeren oder leeren Zeichenfolgen

1. Einleitung

In diesem Tutorial werden einige Möglichkeiten zum Überprüfen auf leere oder leere Zeichenfolgen in Java beschrieben. Wir haben einige muttersprachliche Ansätze sowie einige Bibliotheken.

2. Leer gegen Leer

Es ist natürlich ziemlich üblich zu wissen, wann eine Zeichenfolge leer oder leer ist, aber stellen wir sicher, dass wir mit unseren Definitionen auf derselben Seite sind.

Wir betrachten ein String sein leer , wenn es entweder ist null oder eine Zeichenfolge ohne jede Länge. Wenn eine Zeichenfolge nur aus Leerzeichen besteht, nennen wir sie leer .

Für Java sind Leerzeichen Zeichen wie Leerzeichen, Tabulatoren usw. Beispiele finden Sie in Character.isWhitespace .

3. Leere Saiten

3.1. Mit Java 6 und höher

Wenn wir mindestens Java 6 verwenden, ist String # isEmpty der einfachste Weg, um nach einer leeren Zeichenfolge zu suchen :

boolean isEmptyString(String string) { return string.isEmpty(); }

Um es auch null-sicher zu machen, müssen wir einen zusätzlichen Check hinzufügen:

boolean isEmptyString(String string)  string.isEmpty(); 

3.2. Mit Java 5 und darunter

String # isEmpty wurde mit Java 6 eingeführt. Für Java 5 und niedriger können wir stattdessen String # length verwenden.

boolean isEmptyString(String string)  return string == null 

Tatsächlich ist String # isEmpty nur eine Verknüpfung zur Länge von String # .

4. Leere Zeichenfolgen

Sowohl String # isEmpty als auch String # length können verwendet werden, um nach leeren Strings zu suchen .

Wenn wir auch leere Zeichenfolgen erkennen möchten, können wir dies mithilfe von String # trim erreichen . Vor der Überprüfung werden alle führenden und nachfolgenden Leerzeichen entfernt.

boolean isBlankString(String string)  string.trim().isEmpty(); 

Um genau zu sein, entfernt String # trim alle führenden und nachfolgenden Zeichen mit einem Unicode-Code kleiner oder gleich U + 0020.

Und auch daran erinnern , dass String s unveränderlich sind, so rufe trim nicht tatsächlich den zugrunde liegenden String ändern.

5. Bean-Validierung

Eine andere Möglichkeit, nach leeren Zeichenfolgen zu suchen , sind reguläre Ausdrücke. Dies ist beispielsweise bei der Java Bean-Validierung praktisch:

@Pattern(regexp = "\\A(?!\\s*\\Z).+") String someString;

Der angegebene reguläre Ausdruck stellt sicher, dass leere oder leere Zeichenfolgen nicht überprüft werden.

6. Mit Apache Commons

Wenn es in Ordnung ist, Abhängigkeiten hinzuzufügen, können wir Apache Commons Lang verwenden. Dies hat eine Vielzahl von Helfern für Java.

Wenn wir Maven verwenden, müssen wir die pons-lang3- Abhängigkeit zu unserem pom hinzufügen :

 org.apache.commons commons-lang3 

Dies gibt uns unter anderem StringUtils .

Diese Klasse enthält Methoden wie isEmpty , isBlank usw .:

StringUtils.isBlank(string)

Dieser Aufruf funktioniert genauso wie unsere eigene isBlankString- Methode. Es ist null-sicher und sucht auch nach Leerzeichen.

7. Mit Guave

Eine weitere bekannte Bibliothek, die bestimmte Dienstprogramme für Zeichenfolgen enthält, ist Googles Guava. Ab Version 23.1 gibt es zwei Varianten von Guava: Android und JRE . Die Android-Variante zielt auf Android und Java 7 ab, während die JRE-Variante für Java 8 gilt.

Wenn wir nicht auf Android abzielen, können wir unserem Pom einfach die JRE-Variante hinzufügen:

 com.google.guava guava 28.0-jre 

Die Guavas Strings-Klasse enthält eine Methode Strings.isNullOrEmpty :

Strings.isNullOrEmpty(string)

Es wird geprüft, ob eine bestimmte Zeichenfolge null oder leer ist , es wird jedoch nicht nach Nur-Leerzeichen-Zeichenfolgen gesucht .

8. Fazit

Es gibt verschiedene Möglichkeiten, um zu überprüfen, ob eine Zeichenfolge leer ist oder nicht. Oft möchten wir auch überprüfen, ob eine Zeichenfolge leer ist, was bedeutet, dass sie nur aus Leerzeichen besteht.

Am bequemsten ist es, Apache Commons Lang zu verwenden, das Hilfsprogramme wie StringUtils.isBlank bereitstellt . Wenn wir uns an einfaches Java halten möchten, können wir eine Kombination aus String # trim mit String # isEmpty oder String # length verwenden . Für die Bean-Validierung können stattdessen reguläre Ausdrücke verwendet werden.

Schauen Sie sich alle diese Beispiele auf GitHub an.