Help com .split()?

6 respostas
rbroz85

bom dia…

estocom problemas em usar o split ?

tenho o seguinte cvs:

1;2;3;;;
3;2;5;2;4;2;6

e sanvando em uma String[]…

o lenth do primeiro da 3… e do segundo le 7 !!!

como faço pra ele ler os ;; (vazios) ???

abs

6 Respostas

R

.split(";", 7);

Assim ele fixa que o array de String terá tamanho 7

W
public class Teste {

    public static void main(String args[]) {
	
	String str1 = "1;2;3;;2";
	String str2 = "1;2;3;4;5;6";
 	
	String[] a1 = null;
	String[] a2 = null;
	

	a1 = str1.split(";",-2);
	a2 = str2.split(";",-2);

	for (String str : a1) {
	    System.out.println("a1 -> " + str);
	}

	for (String str : a2) {
	    System.out.println("a2 -> " + str);
	}
	
	
    }

}

Se vc colocar um valor negativo no segundo parametro do split vai pegar todos os brancos ate o fim.

spycall

Ou então use o

StringTokenizer xxx = new StringTokenizer(valor,";");
W

ronybrand:
.split(";", 7);

Assim ele fixa que o array de String terá tamanho 7

hummm, eu acho que seria desnecessario fazer desse jeito porque vc ta limitando o split de aplicar a RE somente ate encontrar 7, tem situacoes que vc pode precisar fazer isso, mas eu acho que nao eh o que o rbroz85 quer.

Por exemplo, se eu tiver o array :

String str1 = "1;2;3;;2;;;;;2";

E usar :

String[] a1 = str1.split(";",7);;

Quando eu listar todos os elementos do array eu vou ter :

a1 -> 1
a1 -> 2
a1 -> 3
a1 ->
a1 -> 2
a1 ->
a1 -> ;;;2

Por isso usar o -3 no segundo argumento faz com o o split aplique a RE ate o final sem ignorar os brancos.

rbroz85

nao galera…

eu nem posso delimitar o tamanho…
por exemplo seeu tenho uma linha assim:

1;4;;;;;;;;;;7

ele cria um string[12] blz !

mas se e utiver assim:

1;4;;;;;;;;;;

ele cria um string[2];

ou seja quando o ultimo esta fazio… ele desconcidera e diminue o tamanho do vetor…

entao, no java eu nao concegui resolver isso… entao eu fui la no excel… e adcionei mais uma coluna no final com um caracter qualquer assim:

1;4;;;;;;;;;;#

ou seja pra forçar ele ter 12 posições.

vai funcionar se eu fizer split (";",12) , como o ronybrand mencionou ?]

ele vai conciderar no meu vetor os campos nulos ?

abs

obrigado

W

Meu, coloca o segundo argumento do split um numero negativo!!!

compila o exemplo que eu coloquei ai

public class TesteSplit {
    
    public static void main(String[] args) {

	String str = "1;4;;;;;;;;;;";

	String[] a = str.split(";" ,-1);

	System.out.println("TAMANHO : " + a.length);
	
    }

}

A saida vai ser : TAMANHO : 12 e nao 2

Se vc fazer um loop nesse array vc vai ver que ele nao ignorou os espacos em branco.

Criado 6 de dezembro de 2007
Ultima resposta 7 de dez. de 2007
Respostas 6
Participantes 4