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!!