Boa noite Nico Steppat,
teria como montar um replaceAll no java para só aceitar os seguintes caracteres?
0-9 a-z A-Z ° º ª - .
o restante dos caracteres seriam substituídos por espeços em branco.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa noite Nico Steppat,
teria como montar um replaceAll no java para só aceitar os seguintes caracteres?
0-9 a-z A-Z ° º ª - .
o restante dos caracteres seriam substituídos por espeços em branco.
public static String removeCaracterEspecial(String str) {
String strRetorno = str;
strRetorno = strRetorno.replaceAll("[ÂÀÁÄÃ]", "A");
strRetorno = strRetorno.replaceAll("[âãàáä]", "a");
strRetorno = strRetorno.replaceAll("[ÊÈÉË]", "E");
strRetorno = strRetorno.replaceAll("[êèéë]", "e");
strRetorno = strRetorno.replaceAll("ÎÍÌÏ", "I");
strRetorno = strRetorno.replaceAll("îíìï", "i");
strRetorno = strRetorno.replaceAll("[ÔÕÒÓÖ]", "O");
strRetorno = strRetorno.replaceAll("[ôõòóö]", "o");
strRetorno = strRetorno.replaceAll("[ÛÙÚÜ]", "U");
strRetorno = strRetorno.replaceAll("[ûúùü]", "u");
strRetorno = strRetorno.replaceAll("Ç", "C");
strRetorno = strRetorno.replaceAll("ç", "c");
strRetorno = strRetorno.replaceAll("[ýÿ]", "y");
strRetorno = strRetorno.replaceAll("Ý", "Y");
strRetorno = strRetorno.replaceAll("ñ", "n");
strRetorno = strRetorno.replaceAll("Ñ", "N");
strRetorno = strRetorno.replaceAll("[+=*&%$#@!_¹²³£¢¬§¨`´~\\?\\^\\[\\]\"'\\|<>(),\\{\\}\\\\]", "");
strRetorno = strRetorno.replaceAll("\s+", " ");
return strRetorno;
}
Será que existe uma forma mais "enxuta" de escrever este método?
Olá Sergio! Tudo bem?
Achei muito legal a forma como você idealizou essa solução!
Apesar de nos parecer bastante repetitivo... ela é bem direta, e funciona para o seu propósito!
Pesquisei a respeito e até conversei com alguns amigos sobre a possibilidade de utilizarmos outras formas de abordar essa funcionalidade...
Pelo que percebi, você realmente fez de uma forma bem clara, o que é ótimo para manutenção do código.
Possivelmente, se tentarmos utilizar qualquer outra forma de solucionar o mesmo problema, teremos um aumento considerável na complexidade do código, e aí entra em questão outra característica do código... será que vale a pena utilizar outra solução que aumenta a complexidade? Cada caso é diferente nesse aspecto, sabe?
Em programação não temos um padrão para cada situação, por assim dizer. O que sempre queremos é que nosso código seja simples de se entender e atinja seu propósito!
Tendo isso em mente, eu te recomendo alguns links que achei interessantes, e que podem te dar um contexto mais amplo:
Substituir Carácter em String em Java
Caso deseje utilizar isso para uma validação, uma opção seria utilizar Regex: Artigo sobre uso de Regex
Espero que te dê mais algumas ideias sobre o assunto!
Realmente eu não tenho outra ideia em mente que funcione da forma como sua solução funcionou... acredito que ela está sendo bem direta e simples de se entender!
A explicação foi legal? Se eu puder te ajudar em mais alguma coisa é só falar!
Boa tarde Guilherme Henrique de Lira Silva,
Obrigado pela dica e opinião.