[Resolvido]Problemas com a API String(--método split--)

Bom dia a todos, depois de ler a API, e tentar entender o que acontece com os tokens abaixo, não consegui entender por que não consigo quatro tokens e sim
ou seja, o método 'split", não tokeniza o ultimo “##”, ja tentei a mesma coisa com ponto vírgula, alguem poderia me ajudar?

[code]public class Regex {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	String str1 = "Jose##Roberval##";
	String[] vet = str1.split("#");
	
	for(String token: vet){
		System.out.println(">>"+token+"<<");
	}
	System.out.println("-----------------------------expressao-----------------------");
	
	vet = str1.split("\\#");
	
	for(String token: vet){
		System.out.println(">>"+token+"<<");
	}
	
}

}
[/code]

Saída:

>>Jose<<
>><<
>>Roberval<<
-----------------------------expressao-----------------------
>>Jose<<
>><<
>>Roberval<<

Bom pessoa, eu penso que a saída deveria ter mais um ">><<", ou seja um espaço vazio causado pela substring "##".

Obrigado a todos.

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split(java.lang.String,%20int)
Passe no segundo parâmetro o valor -1 .

Muito obrigado entanglement, pela resposta, não aproveitando da sua bondade mais uma pergunta.

No caso do codigo

String str1 = &quot;Jose##Roberval##&quot;;   
String[] vet = str1.split(&quot;#&quot;);   
for(String token: vet){   
  System.out.println(&quot;&gt;&gt;&quot;+token+&quot;&lt;&lt;&quot;);   
}   

A saída vai ser a seguinte:

&gt;&gt;Jose&lt;&lt; &gt;&gt;&lt;&lt; &gt;&gt;Roberval&lt;&lt; &gt;&gt;&lt;&lt; &gt;&gt;&lt;&lt;

Ou seja também vai gerar o token depois do ultimo "#", quando na verdade era so necessário o token entre os simbolos "#o espaco que ta aqui#[color=red]não queria isso aqui[/color]"

Eu pensaria em passar -1 e desprezar o ultimo token? Fiquei meio confuso em como proceder

Obrigado

Pergunta. Você queria que isto

##Jose##Roberval##

gerasse

[0] = Jose
[1] = Roberval

Ou

[0] =
[1] = Jose
[2] =
[3] = Roberval
[4] =

?
Diga exatamente o que você quer.

String str1 = “Jose##Roberval##”;

Eu espera isso:

[0] = Jose
[1] =
[2] = Roberval
[3] =

E usando o -1 me retorna isso:

[0]Jose
[1]
[2]Roberval
[3]
[4]

Ou seja o token [4], gerado pelo vazio após o ultimo “#”

Obrigado pela paciência.

Você precisa passar “##” ou então “#+” como o parâmetro de separador. Por algum estranho motivo, você começou certo (usou “##”) e depois usou “#”. Cuidado, que são coisas diferentes.

Na verdae eu pensei da seguinte forma, o separador é “#”, desta forma o primeiro “##” geraria uma string vazia, que é o conteudo entre os dois “##”,
Desta forma eu quero tudo que estiver separado por “#”, desta forma a string:

Jose##Roberval##";

eu gostaria de interpregar como:

Primeiro token: “Jose”
Segundo toket: “”
Terceiro token: “Roberval”
Quarto token: “”

Porém quando eu uso o “-1”

Ele me da a seguinte saida:

Primeiro token: “Jose”
Segundo toket: “”
Terceiro token: “Roberval”
Quarto token: “”
Quinto token: “”

Ou seja um token a mais gerado pelo “vazio”, apos o ultimo “#”.

Espero ter conseguido expressar minha dúvida.

Você poderia dar uma olhada na classe StreamTokenizer: http://docs.oracle.com/javase/6/docs/api/java/io/StreamTokenizer.html

Você pode separar por espaços mesmo (que é o que essa classe espera).

Obrigado pela atenção, realmente esse ultimo token me deixou com a pulga atrás da orelha, mas…
Tokenizer então né.

Obrigado pela atenção.