Duvida com split()

Olha eu denovo ai enchendo o saco…

Eu tenho uma txt que esta estruturado assim:
nome;telefone;email\nnome;telefone;email\n

deu pra entender?
eu consigo separar eles com linhaDoTXT.split(";")

ai vem assim

nome
telefone
email
nome
telefone
email

eu quero q eles sejam sepados pra eu poder, por exemplo usar só o nome e email ou nome e telefone

da pra fazer isso com split :?:

Valeus

String[] linha = suaStringFonte.split("\n"); String[][] usuarios new usuario[linha.length][3]; for(int i =0; i< suaStringFonte.length;i++) { usuarios[i] = suaStringFonte[i].split(";"); }

neste caso…

usuario[0]; //referencia o 1° usuario
usuario[0][0]; //o nome do 1° usuario
usuario[0][1]; //o telefone do 1° usuario
usuario[0][2]; //o email do 1° usuario

Ps.: existe formas mais elegantes de se fazer… orientando a objeto

vc poderia fazer essa classe auxiliar

public class Pessoa { private String[] dados; public Pessoa(String[] dados) { this.dados = dados; } public String getNome() { return this.dados[0]; } public String getTelefone() { return this.dados[1]; } public String getEmail() { return this.dados[2]; } }

ai naquele código anterior daria pra usar assim

String[] linhas = suaStringFonte.split("\n"); List<Pessoa> pessoas = new ArrayList(linhas.length); for(String[] linha : linhas) { pessoas.add(new Pessoa(linha)); } //pronto agora ta + descente... agora vc tem 1 lista de Pessoas ^^

se vc por exemplo quiser imprimir todos os dados, continuado aquele código acima

for (Pessoa p : pessoas) { System.out.print(" Nome: " + p.getNome()); System.out.print(" Endereco: " +p.getEndereco()); System.out.println(" E-mail: "+p.getEmail()); }

Caso queira uma pessoa registrada em uma linha especifica basta pessoas.get(n-1); onde n é o numero da linha
pois os registros iniciam do 0 e vão ate numero de registros - 1 …

Vou implementar uma classe Pessoa lá depois posto como ficou…

Valeu ai Lavieri :!:

[quote=Fabianoc]Vou implementar uma classe Pessoa lá depois posto como ficou…

Valeu ai Lavieri :!: [/quote]

lembre-se que se vc não tiver 100% de certeza do que vai acontecer quando for fazer o splint, é sempre bom testar a conformidade dos dados… por exemplo…

public class Pessoa { private String[] dados = null; public Pessoa(String[] dados) { if (dados != null && dados.length == 3) this.dados = dados; } public String getNome() { return (dados == null) ? null : dados[0]; } //faz o meso para os outros 2 métodos //... }
Caso vc não conheça o operador ternario
(dados == null) ? null : dados[0];
pode ser lido assim… se dados é igual a null então use null caso contrario use dados[0]

sem essa observação do tamanho da array dados, vc pode ter problemas na sua classe… pois pode tentar buscar um item fora do index, pelo fato de uma linha estar mal formatada

Eita…

String[] linhas = leLinha.split("\n"); List<Pessoa> pessoas = new ArrayList(linhas.length); for(String[] linha : linhas) { // aqui da erro fala q eu tenho q mudar o tipo de linhas para String pessoas.add(new Pessoa(linha));
Mais uma vez to perdido… :?

:x :x :x

Mude o for para:

 for(String linha : linhas) {   
    pessoas.add(new Pessoa(linha));