Controleren op lege of lege tekenreeksen in Java

1. Inleiding

In deze zelfstudie bespreken we enkele manieren om te controleren op lege of lege tekenreeksen in Java. We hebben een aantal benaderingen in de moedertaal, evenals een aantal bibliotheken.

2. Leeg vs. leeg

Het is natuurlijk vrij gebruikelijk om te weten wanneer een tekenreeks leeg of leeg is, maar laten we ervoor zorgen dat we op dezelfde pagina staan ​​met onze definities.

We beschouwen een string te zijn leeg als het een van beide is nul of een string zonder ieder lengte. Als een string alleen uit witruimte bestaat, noemen we dat blank.

Voor Java zijn witruimten tekens zoals spaties, tabs enzovoort. Kijk even naar Character.isWhitespace bijvoorbeeld.

3. Lege snaren

3.1. Met Java 6 en hoger

Als we op zijn minst Java 6 gebruiken, is de eenvoudigste manier om te controleren op een leeg tekenreeks is Tekenreeks # isEmpty:

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

Om het ook nulveilig te maken, moeten we een extra controle toevoegen:

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

3.2. Met Java 5 en lager

String # isEmpty werd geïntroduceerd met Java 6. Voor Java 5 en lager kunnen we gebruiken Draadlengte in plaats daarvan.

boolean isEmptyString (String string) return string == null 

In feite, String # isEmpty is slechts een snelkoppeling naar Draadlengte.

4. Blanco snaren

Beide Tekenreeks # isEmpty en Draadlengte kan worden gebruikt om te controleren op leeg snaren.

Als we ook willen detecteren blank strings, kunnen we dit bereiken met behulp van Snaar # trim. Het zal verwijder alle voorloop- en volgspaties voordat u de controle uitvoert.

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

Precies zijn, Snaar # trim verwijdert alle voor- en achterliggende tekens met een Unicode-code kleiner dan of gelijk aan U + 0020.

En onthoud dat ook Draads zijn onveranderlijk, dus roeping bijsnijden zal de onderliggende string niet echt veranderen.

5. Bonenvalidatie

Een andere manier om te controleren blank strings zijn reguliere expressies. Dit is bijvoorbeeld handig bij Java Bean Validation:

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

De gegeven reguliere expressie zorgt ervoor dat lege of lege strings niet worden gevalideerd.

6. Met Apache Commons

Als het ok is om afhankelijkheden toe te voegen, kunnen we Apache Commons Lang gebruiken. Dit heeft een groot aantal helpers voor Java.

Als we Maven gebruiken, moeten we het commons-lang3 afhankelijkheid van onze pom:

 org.apache.commons commons-lang3 

Dit geeft ons onder andere StringUtils.

Deze klasse wordt geleverd met methoden zoals is leeg, is leeg enzovoorts:

StringUtils.isBlank (tekenreeks)

Deze oproep doet hetzelfde als de onze isBlankString methode. Het is nulveilig en controleert ook op witruimten.

7. Met Guava

Een andere bekende bibliotheek die bepaalde tekenreeksgerelateerde hulpprogramma's biedt, is Google's Guava. Vanaf versie 23.1 zijn er twee smaken Guava: android en jre. De Android-smaak is gericht op Android en Java 7, terwijl de JRE-smaak voor Java 8 geldt.

Als we Android niet targeten, kunnen we gewoon de JRE-smaak aan onze pom toevoegen:

 com.google.guava guave 28.0-jre 

Guavas Strings-klasse wordt geleverd met een methode Strings.isNullOrEmpty:

Strings.isNullOrEmpty (tekenreeks)

Het controleert of een bepaalde string null of leeg is, maar het controleert niet op tekenreeksen met alleen witruimte.

8. Conclusie

Er zijn verschillende manieren om te controleren of een string leeg is of niet. Vaak willen we ook controleren of een string leeg is, wat betekent dat deze alleen uit spaties bestaat.

De handigste manier is om Apache Commons Lang te gebruiken, dat hulp biedt zoals StringUtils.isBlank. Als we ons bij gewoon Java willen houden, kunnen we een combinatie gebruiken van Snaar # trim met een van beide String # isEmpty of Draadlengte. Voor Bean Validation kunnen in plaats daarvan reguliere expressies worden gebruikt.

Bekijk al deze voorbeelden op GitHub.