4
respostas

Aceitar só alguns caracteres

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.

4 respostas
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("[+=*&amp;%$#@!_¹²³£¢¬§¨`´~\\?\\^\\[\\]\"'\\|<>(),\\{\\}\\\\]", "");
    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.