sábado, 9 de junho de 2012

Manipulação de Strings

Uma forma fácil de formatar strings em java é utilizando a classe MaskFormatter.

import javax.swing.text.MaskFormatter;

public static String formatarString(String texto, String mascara) {
    if(texto == null){
        return null;
    }
    try {
        MaskFormatter mf = new MaskFormatter(mascara);
        mf.setValueContainsLiteralCharacters(false);
        return mf.valueToString(texto);
    } catch(Exception e){
        return texto;
    }
}

public static String desformatarString(String texto, String mascara) {
    if(texto == null){
        return null;
    }
    try {
        MaskFormatter mf = new MaskFormatter(mascara);
        mf.setValueContainsLiteralCharacters(false);
        return mf.stringToValue(texto).toString();
    } catch(Exception e){
        return "";
    }
}
Um exemplo de utilização é se você precisa formatar um CNPJ. Imagine que você receba o valor do CNPJ sem pontos e traços, mas precisa mostrá-lo corretamente formatado...você poderia fazer assim:

public static void main(String[] args) {
    try{
        System.out.println(formatarString("54555499869655", "##.###.###/####-##"));
    }catch(Exception e){
        e.printStackTrace();
    }
}
Agora, se você recebe o CNPJ formatado e precisa gravá-lo no banco somente com os números, você poderia fazer:

public static void main(String[] args) {
    try{
        System.out.println(desformatarString("54.555.499/869-655", "##.###.###/####-##"));
    }catch(Exception e){
        e.printStackTrace();
    }
}
Imagine agora que você ainda precisa guardar alguma informação (sem qualquer formatação) que foi formatada mas você não sabe que formato foi utilizado. Utilize então esse método:

public static String somenteNumerosLetras(String texto) {
    if(texto == null){
        return null;
    }
    return texto.replaceAll("[^0-9a-z0-9A-Z]", "");
}
Ele retira tudo o que não for letra e número da string...fácil né!

Nenhum comentário:

Postar um comentário