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.
Muito obrigado entanglement, pela resposta, não aproveitando da sua bondade mais uma pergunta.
No caso do codigo
String str1 = "Jose##Roberval##";
String[] vet = str1.split("#");
for(String token: vet){
System.out.println(">>"+token+"<<");
}
A saída vai ser a seguinte:
>>Jose<<
>><<
>>Roberval<<
>><<
>><<
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.