Método isBlank()

Por algum motivo, o método .isBlank() não é reconhecido. Alguém pode me ajudar?

Como esse método deveria funcionar? está usando alguma biblioteca?

Pelo nome do método acho q vc tá tentando checar se algo está vazio. Tenta isEmpty()

Sem mais contexto, não temos como saber, apenas chutar.

No Java 11 foi adicionado o método isBlank na classe String. Se é isso que você tentou usar, verifique a versão do Java.

Existem bibliotecas (como a commons-lang), que também possuem esse método. Se foi isso que você tentou usar, temos que saber como exatamente você tentou (baixou a biblioteca? Está usando algum gerenciador de dependência como o Maven? Adicionou no classpath? Foi mesmo uma biblioteca? Qual? Etc etc etc).

Como pode ver, é muito chute. Pode ser que eu acerte, mas pode ser que não.

Já se você desse mais detalhes do que está tentando fazer, ou de como você fez, qual erro que deu, em qual ferramenta/IDE e versão do Java, etc, aí a gente não precisaria chutar, e a resposta viria mais rapidamente :slight_smile:

Desculpe o tom mais ríspido, mas é pro seu bem: aprender a fazer perguntas de forma eficiente vai te ajudar não só no fórum, mas na vida profissional também…

2 curtidas

Teoricamente ele já era para estar no Java internamente. Ele funciona de forma semelhante ao empty, com a diferença que em casos onde a string possui o valor " " ele considera True, enquanto o empty considera false. Utilizando o .trim eu resolvi o problema, minha dúvida era só por que um função teoricamente built in não estava lá

Se for o método isBlank da classe String, eu já disse: esse método só foi adicionado no Java 11. Se ele não está aí, vc deve estar usando uma versão anterior.

Como dito pelo @hugokotsubo, esse método foi adicionado na versão 11. Se vc estiver usando uma versão anterior, sim, talvez a função já esteja lah, mas, provavelmente como uma preview feature, que, se vc quiser experimentar, terá que habilitar usando: --enable-preview.

Veja como habilitar na IDE (eclipse ou intellij) no link: https://www.baeldung.com/java-preview-features

Vale lembrar que trim pode não funcionar sempre. Para a maioria dos textos “normais”, funciona, mas graças ao Unicode, as coisas ficaram bem mais, digamos, estranhas.

O Unicode define vários caracteres diferentes para o “espaço” (exemplos), e trim não remove todos (somente os “espaços ASCII”). Se quiser remover tudo mesmo, tem que usar o método strip (que também foi adicionado no Java 11, assim como isBlank - ou seja, em versões anteriores você só tem a opção de usar trim mesmo).

Veja a diferença:

// string com espaços e um FOUR-PER-EM SPACE (https://www.fileformat.info/info/unicode/char/2005/index.htm)
String texto = "  \u2005  ";
System.out.println(texto.isBlank()); // true
System.out.println(texto.isEmpty()); // false

System.out.println(texto.trim().isEmpty()); // false (trim não remove o FOUR-PER-EM SPACE, só espaços)
System.out.println(texto.strip().isEmpty()); // true (strip remove também o FOUR-PER-EM SPACE)

Usei o caractere \u2005 (FOUR-PER-EM SPACE - o \u2005 é a forma de escrever o caractere usando unicode escape, com o código numérico do caractere, já que eu nem sei como digitá-lo diretamente com o teclado). Veja que trim não o remove, por isso a string resultante não é vazia, enquanto que isBlank leva este caractere em consideração (pois ele é considerado um white space).

Como já disse, para a maioria dos textos “normais”, trim vai funcionar, mas é um detalhe importante a se atentar.

2 curtidas