Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Buscar uma mascara de strings com contains

Prezados:

Tenho uma classe que lê dados de um documento completo (etiqueta) e o transforma em String, como o exemplo abaixo:

Nome do Cliente - CPF 357.814.098-82 Rua Holanda, 64 - Casa - 71200-100 Rio de Janeiro-RJ

No código abaixo, como eu faria para pegar no contains apenas o conteúdo no formato xxx.xxx.xxx-xx (CPF) de todo o arquivo, ao invés de usar como abaixo, o ("357.")?

String lines[] = pdfFileInText.split("\\r?\\n");
                for (String line : lines) {
                    if (line.contains("357.")){ 
                        System.out.println(line);

Obrigado! Flavio

3 respostas

Você pode usar o line.matches() passando o regex desejado.

No caso da máscara que você forneceu o regex poderia ser(se os pontos e hífen forem obrigatórios):

\d{3}\.\d{3}\.\d{3}\-\d{2}

Se for padrão ter a palavra CPF você pode fazer uma busca pela palavra CPF ao encontrá-la copiar os próximos X números (com ou sem . e -)

solução!

você pode fazer isso:

String lines[] = pdfFileInText.split("\\r?\\n");

 String regex = "^([0-9]{3}\.?){3}-?[0-9]{2}$";
 Pattern pat = Pattern.compile(regex);

for (String line : lines) {
        Matcher mat = pat.matcher(line)
        if(mat.find()){
             System.out.println(line);
        }
 }

espero ter ajudado.