Verificando cadeias vazias ou em branco em Java

Verificando cadeias vazias ou em branco em Java

1. Introdução

Neste tutorial, examinaremos algumas maneiras de verificar strings vazias ou em branco em Java. Temos algumas abordagens de linguagem nativa, bem como algumas bibliotecas.

2. Vazio vs. Em branco

Claro, é muito comum saber quando uma string está vazia ou em branco, mas vamos ter certeza de que estamos na mesma página com nossas definições.

Consideramos uma string comoempty se fornull ou uma string sem comprimento deany. Se uma string consiste apenas em espaços em branco, então a chamamos deblank.

Para Java, espaços em branco são caracteres como espaços, guias e assim por diante. Dê uma olhada emCharacter.isWhitespace para exemplos.

3. Cordas vazias

3.1. Com Java 6 e superior

Se estivermos pelo menos no Java 6, a maneira mais simples de verificar se há uma stringempty éString#isEmpty:

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

Para torná-lo também seguro para nulos, precisamos adicionar uma verificação extra:

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

3.2. Com Java 5 e Abaixo

String#isEmpty foi introduzido com Java 6. Para Java 5 e anteriores, podemos usarString#length.

boolean isEmptyString(String string) {
    return string == null || string.length() == 0;
}

Na verdade,String#isEmpty is just a shortcut to String#length.

4. Cordas em branco

AmbosString#isEmpty eString#length podem ser usados ​​para verificar stringsempty.

Se também quisermos detectar strings deblank, podemos fazer isso com a ajuda deString#trim. Seráremove all leading and trailing whitespaces before performing the check.

boolean isBlankString(String string) {
    return string == null || string.trim().isEmpty();
}

Para ser mais preciso,String#trim removerá todos os caracteres iniciais e finais com umUnicode code less than or equal to U+0020.

E lembre-se também de queStrings são imutáveis, portanto, chamartrim não muda realmente a string subjacente.

5. Validação de Bean

Outra forma de verificar as stringsblank são as expressões regulares. Isso é útil, por exemplo, comJava Bean Validation:

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

A expressão regular fornecida garante que cadeias vazias ou em branco não sejam validadas.

6. Com o Apache Commons

Se estiver tudo bem para adicionar dependências, podemos usarApache Commons Lang. Isso tem uma série de ajudantes para Java.

Se usarmos o Maven, precisamos adicionarthe commons-lang3 dependency ao nosso pom:


    org.apache.commons
    commons-lang3

Entre outras coisas, isso nos dáStringUtils.

Esta classe vem com métodos comoisEmpty,isBlanke assim por diante:

StringUtils.isBlank(string)

Essa chamada faz o mesmo que nosso próprio métodoisBlankString. É null-safe e também verifica se há espaços em branco.

7. Com goiaba

Outra biblioteca conhecida que traz certos utilitários relacionados a strings é oGuava do Google. A partir da versão 23.1, existem dois sabores de goiaba:androidejre. O sabor do Android é direcionado para Android e Java 7, enquanto o sabor do JRE é para o Java 8.

Se não tivermos como alvo o Android, podemos apenas adicionarthe JRE flavor ao nosso pom:


    com.google.guava
    guava
    28.0-jre

A classe Cordas de goiabada vem com um métodoStrings.isNullOrEmpty:

Strings.isNullOrEmpty(string)

Ele verifica se uma determinada string é nula ou vazia,but it will not check for whitespace-only strings.

8. Conclusão

Existem várias maneiras de verificar se uma sequência está vazia ou não. Freqüentemente, também queremos verificar se uma string está em branco, o que significa que ela consiste apenas em caracteres de espaço em branco.

A maneira mais conveniente é usar o Apache Commons Lang, que fornece ajudantes comoStringUtils.isBlank. Se quisermos manter o Java puro, podemos usar uma combinação deString#trim comString#isEmpty ouString#length. Para a Validação de Bean, expressões regulares podem ser usadas.

Certifique-se de verificar todas essas amostrasover on GitHub.