Limpar CNPJ, duvida replaceAll

5 respostas
arm.jr

Tenho um CNPJ : 00.000.000/0001-20
Queria tirar os números depois da barra " / " .
test.substring(0,test.lastIndexOf("/")).replaceAll(".", “”); , Deu certo.
[b]Agora queria tirar o ponto " . “, coloquei replaceAll(”.", “”), rodei e não apareceu nada.

Fiz algo de errado?![/b]

String test = "00.000.00/0001-24"; String x = test.substring(0,test.lastIndexOf("/")); String y = x.replaceAll(".", ""); System.out.println(y);

5 Respostas

thiago.correa

Fez, tente isso

String test = "00.000.00/0001-24"; String x = test.substring(0,test.lastIndexOf("/")); String y = x.replaceAll("\.", ""); System.out.println(y);
A explicação é relativamente simples, o ponto é um metacaractere utilizado em expressões regulares para “casar” expressões, ou seja, o ponto ele aceita qualquer combinação, por isso que ele substituia tudo por nada :smiley:

T

“.” é um caracter especial para expressões regulares. Use o “” para “escapar” o caracter, ou Pattern.quote para forçar a não entender como uma expressão regular.

.... replaceAll("\.", "") ...

ou então (a partir do Java 5)

.... replaceAll(Pattern.quote("."), "") ...
arm.jr

Valeu!!

peczenyj

Existem varias formas de fazer isso, por exemplo:

String test = "00.000.00/0001-24"; test.split("/")[0].replaceAll("\D","")

onde \D é o mesmo que \D – uma expressão regular que casa com qualquer coisa que não seja um número.

L

// Biblioteca usada
import java.util.regex.Pattern;

// Retroma somente numeros
    public String SomenteNumeros(String s){
      String resultado = "";
      for(int i=1;i<=s.length();i++){
        if (!Pattern.matches("([^0-9])+",s.substring(i-1,i)))
        {
            resultado +=resultado.substring(i-1,i); 
        }
      }
     return resultado;    
    }
Criado 11 de outubro de 2007
Ultima resposta 24 de out. de 2008
Respostas 5
Participantes 5