Caracter "|" (pipe) para delimitar String

Amigos bom dia,

Estava tentando usar o caracter | para delimitar uma String usando o .split("|") porém ele me retorna um array de todos os caracter ao invés de delimitar nos pontos indicados…com outros caracteres tipo # ou " " (espaço) funciona normalmente…alguem tem uma explicação? Apesar de já ter conseguido não conseguirei dormir com uma dúvida dessas! hehe

segue codigo com #:

public static void main(String[] args) {

	String nome = "null#teste#12";
	
	String[] nomes = nome.split("#");
	
	for (int i = 0; i < nomes.length; i++) {
		System.out.println(nomes[i]);
	}
	
}

e com o “|”:

public static void main(String[] args) {

	String nome = "null|teste|12";
	
	String[] nomes = nome.split("|");
	
	for (int i = 0; i < nomes.length; i++) {
		System.out.println(nomes[i]);
	}
	
}

comparem e vejam a diferença!

Use split ("\|") (ou então split (Pattern.quote ("|")), ou então split ("[|]").
É que “|” é um caracter especial para expressões regulares, que deve ser tratado especialmente.

Cara,
Eu testei uma vez com “*” e não funcionava.
Acho que o Java restringe alguns caracteres…
Dá uma procurada sobre Pattern.

[editado]
Desculpe, thingol. Não vi sua mensagem.
[/editado]

Tente isto:

String valor = "1|2|3|4|5";
		
StringTokenizer st = new StringTokenizer(valor,"|");
while(st.hasMoreElements()) {
   System.out.println(st.nextElement());
}

[]'s

valew galera!

Boa tarde, Galera…

Alguém sabe como pegar os valores, quando entre os pipes está vazio igual o exemplo abaixo;

ele mostra que tem um item a menos, não pega o campo 2.


String valor = "1||3|4|5";  
          
StringTokenizer st = new StringTokenizer(valor,"|");  
while(st.hasMoreElements()) {  
   System.out.println(st.nextElement());  
}  

muito obrigado pela ajuda