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
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…
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.