Find patterns inside a String [closed]

-3

I'm having trouble finding two patterns inside a string in java, given a string. For example:

String str = 021478345231402198408189472328090419790164437663021101996091789834401805198616773422110231220010017325545008091968040901876902511198100789089990090919991753135151210101987; 

I know that every 11 digits is a cpf and every 8 digits after cpf is a date of birth.

I need to resolve this issue

  
  • Given a sequence file, with fixed-length records, containing CPF numbers (11 bytes) followed by birth dates (8 bytes).
  •   

    Identify:

         

    How many records are there in the file? What is the position of the 3rd register?   (Create a formula) List one record per line and separating the fields   by ,

    I can use the pattern to find x numbers, but I did not understand to find x and y standard.

    I tried to use a substring(0,9)+","; but he changed the last number to , .

        
    asked by anonymous 15.03.2018 / 18:32

    2 answers

    0

    Can be done by creating a List and a Pojo class with two cpf and birth strings

    //Variaveis preliminares
        List<Pessoa> todos = new ArrayList<Pessoa>();
        String str = "021478345231402198408189472328090419790164437663021101996091789834401805198616773422110231220010017325545008091968040901876902511198100789089990090919991753135151210101987";
        int ncaracteres = str.length();
        int npessoas = ncaracteres / 19;
        String cpf,nascimento;
    
        //Produz a separação dos termos em uma List do tipo Pessoa e suas variáveis cpf e nascimento
        for (int i=0;i<npessoas;i++){
            int c = i * 19;
            cpf=str.substring(c+0,c+11);
            nascimento=str.substring(c+11,c+19);
            todos.add(new Pessoa(cpf,nascimento));
            System.out.println("CPF: "+cpf +" , "+"NASCIMENTO: "+nascimento);
        }
    
        //Uso dos dados conforme desejado,
        //lembrando que a posição de .get(x) para obter a 3 posição insere 2 pois o 0 conta como primeiro item
        System.out.println("Número de registros: "+todos.size());
        System.out.println("Dados 3 registro: "+todos.get(2).getCpf() + " NASCIMENTO: "+todos.get(2).getNascimento() );
    
    public class Pessoa{
        String cpf;
        String nascimento;
        public Pessoa(String cpf, String nascimento) {
            this.cpf = cpf;
            this.nascimento = nascimento;
        }
        public String getCpf() {
            return cpf;
        }
        public String getNascimento() {
            return nascimento;
        }
    }
    
        
    15.03.2018 / 22:48
    -3

    Here's an example of how to separate the String into characters so you can do the exercise. With this example you can separate the dates as well.

    //Nesse exemplo só vou dividir os números a cada 11 números
       String str = "021478345231402198408189472328090419790164437663021101996091789834401805198616773422110231220010017325545008091968040901876902511198100789089990090919991753135151210101987"; 
         int b=1;
         String g = "";
            for (int a = 0; a < str.length(); a++) {
                //aqui é pego cada caracter da String
                String c = String.valueOf( str.charAt(a));
                //concatena uma nova string com os dados achados
                g = g + c;
                b++;
    
                //a cada 11 caracters é feita a impressão                      
                if (b > 11) {
                //Caso você queira salvar os dados correspondentes a cpf ou data
                //Você pode criar uma lista e adicionar os dados ja concatenado
                System.out.println("Disão a cada 11 números " + g);
    
                    //iniciar e continuar o próximo loop do for
                     b = 1;
                     g="";
                }
        }
    
        
    15.03.2018 / 19:14