Java - Remover apóstrofo de String (Resolvido)

Olá, Pessoal!

Estou usando o seguinte codigo para remover os acentos especiais das strings. Ele funciona, mas não remove os apostrofos. Alguém sabe o motivo?

Normalizer.Form.NFD
string = string.replaceAll("[^\p{ASCII}]", ""));

Por exemplo, Santa Barbara D’Oeste esse apostrofo deveria ser eliminado, mas isso não esta ocorrendo.

Obrigada!

Bom, isso aqui está removendo qualquer caractere que não seja ASCII, mas o apóstrofo é ASCII. Por isso ele não é removido.

Você pode trocar para:

string.replaceAll("[\\P{ASCII}']", "")

Repare que agora o “P” é maiúsculo, não tem mais o ^ e incluí o apóstrofo dentro dos colchetes.

Assim ele remove qualquer caractere que não seja ASCII e os apóstrofos.


Basicamente, [^x] é “qualquer coisa que não seja x”, e [x] (sem o ^) é “qualquer coisa que seja x”.

E \p{ASCII} é “qualquer caractere ASCII”, enquanto \P{ASCII} (com “P” maiúsculo) é “qualquer caractere que não seja ASCII”, então [^\p{ASCII}] e [\P{ASCII}] são equivalentes. Mas como eu precisava adicionar o apóstrofo na lista de caracteres válidos, preferi usar o \P.

1 curtida

Funcionou!! Muito obrigada! =)

Olá, Hugo! Boa tarde!
Uma ajuda adicional sobre esse tópico. Quando ele remove o apostrofo de Santa Barbara D’Oeste ele junta as palavras.
Tem algum jeito de deixar elas separadas? D Oeste e não DOeste.
Eu add um espaço nas aspas, mas não resolveu.

string.replaceAll("[\\P{ASCII}']", " ")

Então você precisa separar em dois replaces: um remove tudo que não é ASCII, outro troca o apóstrofo por espaço:

string.replaceAll("\\P{ASCII}", "").replaceAll("'", " ")
1 curtida

Perfeito! Muito obrigada! Bom final de semana!!