Problema com split

4 respostas
jonasjgs2

eu tenho um arquivo texto delimitado com o caracter pipe "|"
ate ai blz...

tenho um arquivo texto
com os seguintes dados:

a|b||c||

observe que o ultimo esta vazio... ou seja "||"

quando eu executo o aplicativo abaixo ele nao gera um array com tamanho 5
ele gera com tamanho 4.
ou seja observe que depois do b tem um vazio tambem.. ele conta este como vazio... mas o ultimo ele nao considera...
e o pior este arquivo sao dados vindos de outro aplicativo que nao tem como eu modificar... eu tenho que tratar...
como existem varios tipos de registros neste texto... e muito trabalhoso eu ficar tratando o lenght da linha que estou lendo...
tem alguma maneira de resolver este problema... digo ele considerar o ultimo vazio...

antes que alguem me pergunte e o seguinte:
este arquivo e um arquivo com layout gerado para o emissor de nota fiscal eletronica
fazer a importacao e estou fazendo um projeto para ler este mesmo layout do emissor e emitir a nota fiscal eletronica...
e isso acontece em alguns registros...

segue abaixo um aplicativo teste que ilustra o problema:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package olamundo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 *
 * @author Jonas
 */
public class TesteSplit {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        File file = new File("c:\\teste.txt");        
        FileInputStream in = new FileInputStream(file);
        FileReader reader = new FileReader(file);
        BufferedReader b = new BufferedReader(reader);
        String s;

        s = b.readLine();
        System.out.println(s);
        String s2[] = s.split("|");
        System.out.println(s2.length);
        String s3[] = s.split("\\|");
        System.out.println(s3.length);
        
        b.close();
        

    }
}

4 Respostas

DaniloAndrade

tenta usar no split |+?

E
Rodrigo_Sasaki

Incrível… Uma rápida busca teria resolvido, já que você postou essa solução a pouquíssimo tempo.

DaniloAndrade

é o split usando o segundo parametro -1 funciona, vai criar um array com 6 posições

Criado 17 de outubro de 2012
Ultima resposta 17 de out. de 2012
Respostas 4
Participantes 4