Ajuda com a Leitura e atribuição no Vetor [RESOLVIDO]

Pessoal estou com o seguinte método:

public void separarPipe() {

String valor = "<1>|LAEL | WELL | PIAGEM | LUCIANO|<enter><1>|SNK | 2018 | NOVO | Laço|<enter>"
            + "<1>|Lael | 2019 | New | Lamp|<enter><1>|LAEL | WELL | PIAGEM | LUCIANO|<enter>"
            + "<1>|Jurema | 1515 | Lokona | Superman|<enter><1>|Lael | 2019 | New | Lamp|<enter>"
            + "<1>|LOOK|2010<enter>";

    int total = valor.split("<enter>").length;
    int i = 0;

    String val[] = null;
    //valor = valor.replace(" ", "");

    for (i = 0; i < total; i++) {
        //for (int j = 0; j < 4; j++) {
            val = valor.split(Pattern.quote("|"));
        //}

        valor = valor.substring(valor.indexOf("<enter>"),valor.length());
        //new InsereDao().consomeProcedure(val[1], val[2], val[3], val[4]);
        System.out.println(val[1] + val[2] + val[3] + val[4]);
  
        }
    //JOptionPane.showMessageDialog(null, "Dados Inseridos com sucesso!","Sucesso",2);
}

faço uma leitura de uma String e separo ela através de uma quantificação da tag “enter”, ou seja, cada vez que ela aparece simboliza uma linha, então faço a leitura e separo cada linha por “|”, até aí tudo bem, porém na hora de setar no meu vetor e exibir os valores setados ele está fazendo apenas a atribuição das duas primeiras linhas separadas por “enter” e não consegue ler o restante, alguém poderia me ajudar, porque estou mandando ele me retornar a posição da String pelo último “enter” mas parece que ele considera como último o segundo “enter” apenas.

Ele me devolve assim:

LAEL WELL PIAGEM LUCIANO
SNK 2018 NOVO Laço
SNK 2018 NOVO Laço
SNK 2018 NOVO Laço
SNK 2018 NOVO Laço
SNK 2018 NOVO Laço
SNK 2018 NOVO Laço
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)

Você só executa o for por tantas vezes quanto o tamanho do array, mas não itera sobre o array.

Acho que isso resolve:

String partes[] = valor.split("<enter>");
for(String parte : partes) {
    String val[] = parte.split(Pattern.quote("|"));
    System.out.println(val[1] + val[2] + val[3] + val[4]);
}

Apenas garanta que todas as linhas possuem a mesma quantidade de itens separados pelo pipe.

1 curtida

@darlan_machado muito obrigado man, funcionou perfeitamente, estava meio confuso para dividir e tratar essa String, na verdade não havia feito isso antes.

Muito obrigado!