Remoçao de acentos e caracteres de formatação de Strings

1 resposta
fcpaiva

Sou desenvolvedor java a 12 anos, e sempre acompanhei o fórum e aprendi muito, tomei a decisão de contribuir com um pouco do que sei. Segue abaixo, um código muito simples, utilizando o padrao singleton e reflection, a 1ª classe, é a base de auxílio para remoção de acentos e formatações de uma String, a segunda, e uma implementação realizando a leitura dos métodos do objeto, selecionando apenas os com retorno do tipo String, ele obtem o método, depois o valor do retorno, executa a rotina de remoção dos acentos e caracteres depois, seta os novos valores e retorna o objeto, criticas e sugestões são muito bem vindas

1º classe com funções de remoção de acentos e caracteres:
public class UtilString {

    private static UtilString instance = new UtilString();

    public static UtilString getInstance() {
        return instance;
    }

    public UtilString() {
    }
  public String removerFormatacao(String passa) {
        if (passa == null) {
            return "";
        }
        passa = passa.replace("[", "");
        passa = passa.replace("]", "");
        passa = passa.replace("{", "");
        passa = passa.replace("}", "");
        passa = passa.replace(".", "");
        passa = passa.replace("-", "");
        passa = passa.replace("=", "");
        passa = passa.replace("(", "");
        passa = passa.replace(")", "");
        passa = passa.replace("/", "");
        passa = passa.replace("\\", "");
        passa = passa.replace("|", "");
        passa = passa.replace("R$", "");
        passa = passa.replace("$", "");
        return passa.trim();
    }
public String removerAcentos(String passa) {
        if (passa == null) {
            return "";
        }
        passa = Normalizer.normalize(passa, Normalizer.Form.NFD);

        passa = passa.replaceAll("[^\\p{ASCII}]", "");

        if (Globais.getInstance().isAPP_STR_TRIM()) {
            passa = passa.trim();
        }

        if (Globais.getInstance().isAPP_STR_UPPER()) {
            passa = passa.toUpperCase();
        }

        return passa;
    }
}
2º implementação do método
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
        classBase cb = new classBase();
        cb.setId(1);
        cb.setNome("Jôãó");
        cb.setFantasia("Péréã");
        cb.setCnpjcpf("[CPF removido]");
        cb =(classBase) removerFormatacaoAcentos(cb);
        
        System.out.println(cb.getFantasia());
        System.out.println(cb.getNome());
        System.out.println(cb.getCnpjcpf());
        
    }

    public static Object removerFormatacaoAcentos(Object obj) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
        Method[] campos = obj.getClass().getMethods();
        for (Method f : campos) {
            if (f.getReturnType().toString().equals("class java.lang.String")) {
                String nome = f.getName();
                if (nome.contains("get")) {
                    String aux = (String) f.invoke(obj);
                    aux = UtilString.getInstance().removerAcentos(aux);
                    aux = UtilString.getInstance().removerFormatacao(aux);
                    nome = nome.replace("get", "set");
                    Method method = obj.getClass().getMethod(nome, String.class);
                    method.invoke(obj, aux);
                }
            }
        }
        return obj;
    }
Saída : Perea Joao [telefone removido]

1 Resposta

drsmachado

Bacana a iniciativa.
Tem muita coisa que acaba travando o desenvolvimento e esta é uma destas coisas “simples” que fazem com que a agilidade seja perdida.
Parabéns pela pro-atividade!

Criado 4 de julho de 2011
Ultima resposta 4 de jul. de 2011
Respostas 1
Participantes 2