replace caracteres especiais em string em java

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:

  • O Mínimo Absoluto que Todo Desenvolvedor de Software Absolutamente, Positivamente Deve Saber Sobre Unicode e Conjuntos de Caracteres (Sem desculpas!)
  • Unicode – Como obter os caracteres certos?

É 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 ).