Tokens

4 respostas
G

Boas ppl,

Tenho um ficheiro de texto com informação separada por tabs, exemplo:

A   B   C   D
1   2   3   4
     5        6

como podem ver o ficheiro não está tratado, ou seja, existem colunas que estão a “null”.
A forma como eu devo pegar no ficheiro é com o StringTokenizer.
A 1ª linha do file representa o nome dos campos, e as linhas seguintes sao os valores que eu quero guardar nesses campos.
Uma vez que as colunas estão separadas por tabs, como é que eu verifico quais as colunas que estao a null, p.e. na 3ª linha o valor de C está a null, ou seja sao dois tabs entre B e D, so que nao consigo fazer isso.

Será que alguem me pode ajudar de como eu posso fazer isso?

Atentamente
Graveyard

4 Respostas

P

Eu costumo fazer assim:

// recupera a linha a ser tratada...

tokenizer = new StringTokenizer(linha.replaceAll("\t\t", "\t \t"), "\t");

while(tokenizer.hasMoreTokens()){

     String token = tokenizer.nextToken();

     if (token.equals(" ")){
          token = null;
     }

     // restando do tratamento da linha...
}

Assim, você vai substituir todas as ocorrências de tab-tab por tab-espaço-tab. Depois, quando encontrar um token que possui somente um espaço em branco, já sabe que se trata de um campo null.

guivirtuoso

Aproveitando a dica do nosso amigo graveyard e a sugestao passada pelo pango, alguem teria outra implementação para este problema usando Expressões Regulares ???

Abracos.

rafadeaguiar

Bom, quando preciso pegar dados que são separados por " " eu utilizo o tokenizer tbm, mas em outros casos, eu crio um vetor, pego os dados que estao na linha, e passo pro vetor, e depois crio um for para percorrer este, e pego so os indices que me interessam…

G

Boas ppl,
A sugestão do pango funciona para o caso de ter 2 tabs, porem tou com outra dificuldade.
Eu n sei qtos tabs tenho seguidos, eu posso ter 2 como no post anterior, mas tb posso ter 4 ou 5.

Ex.

A   B   C   D   E
1   2   3   4   0
     5        6   9
7                  8

Eu tenho de ter uma funçao que seja generica e que funcione pra qq situaçao.

Será que algume me pode ajudar?

Atentamente
Graveyard

Criado 13 de março de 2008
Ultima resposta 18 de mar. de 2008
Respostas 4
Participantes 4