Eu quero saber como replace a string em Java.
Por exemplo
String a = "adf sdf";
Como posso replace e evitar caracteres especiais?
Você pode se livrar de todos os caracteres fora do intervalo ASCII imprimível usando String#replaceAll()
substituindo o padrão [^\\x20-\\x7e]
por uma string vazia:
a = a.replaceAll("[^\\x20-\\x7e]", "");
Mas isso na verdade não resolve o seu problema real . É mais uma solução alternativa. Com a informação dada, é difícil descobrir a causa deste problema, mas ler qualquer um desses artigos deve ajudar bastante:
É difícil responder à pergunta sem conhecer mais o contexto.
Em geral, você pode ter um problema de codificação. Veja O Mínimo Absoluto Todo Desenvolvedor de Software (…) Deve Saber Sobre Unicode e Conjuntos de Caracteres para uma visão geral sobre codificações de caracteres.
Supondo que você queira remover todos os caracteres especiais, você pode usar a class de caractere \p{Cntrl}
Então você só precisa usar o seguinte código:
stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);
Você pode usar sequências de escape unicode (como \u201c
[uma cotação de abertura]) para “evitar” caracteres que não podem ser usados diretamente na codificação do arquivo de origem (cujo padrão é a codificação padrão da sua plataforma, mas você pode altere-o com o parâmetro -encoding
para javac
).