Split com |

7 respostas
R

Pessoal,

Estou escrevendo o seguinte código:

aux = “CASE[|$CDCC$,1,1,5,0010|$CDCC$,1,1,8,0010|$CDCC$,1,1,0,0010|$CDCC$,1,2,22,0010|$CDCC$,1,1,3,0010|$CDCC$,1,1,5,0010|$CDCC$,1,1,8,0010|]”
String[] saux = aux.split("|");

Se peço para imprimir

for ( int n = 0; n <= saux.length -1; n++ )

System.out.println(n + “:” + saux[n]);

Vem algo assim:

0:
1:C
2:A
3:S

Ou seja o split quebrou letra a letra.

Agora se substituo o “|” por “:” e peço para splitar de novo. Assim:

aux = “CASE[|$CDCC$,1,1,5,0010|$CDCC$,1,1,8,0010|$CDCC$,1,1,0,0010|$CDCC$,1,2,22,0010|$CDCC$,1,1,3,0010|$CDCC$,1,1,5,0010|$CDCC$,1,1,8,0010|]”
aux = aux.replace("|",":" );

String[] saux = aux.split(":");
    for ( int n = 0; n <= saux.length -1; n++ )
        System.out.println(n + ":" + saux[n]);

Ai. Funciona.

0:$CDCC$,1,1,5,0010
1:$CDCC$,1,1,8,0010
etc…

Alguém sabe por que isso? É um bug da minha versão? Estou errando em alguma coisa?

Obrigado.

Reginaldo

7 Respostas

N

Tente isso:

String[] saux = aux.split(Pattern.quote("|"));
N

Aqui funcionou, vou mostrar a saída:

/* run: 0:CASE[ 1:$CDCC$,1,1,5,0010 2:$CDCC$,1,1,8,0010 3:$CDCC$,1,1,0,0010 4:$CDCC$,1,2,22,0010 5:$CDCC$,1,1,3,0010 6:$CDCC$,1,1,5,0010 7:$CDCC$,1,1,8,0010 8:]*/

S
String[] saux = aux.split("\\|");

http://aurelio.net/regex/guia/ou.html#2_4_2

R

Pois é. Devia funcionar aqui também.

NeiBorgesF : Esta faltando alguma coisa. ", ). Não?

N

reginaldorigo:
Pois é. Devia funcionar aqui também.

NeiBorgesF : Esta faltando alguma coisa. ", ). Não?

Eu editei consertando, agora esta correto. :slight_smile:

R

Schuenemann : Assim funcionou.

Por que? O caracter | é especial para o método split ?

R

NeiBorgesF : Beleza. Desse jeito também funcionou.

Valeu obrigado a todos.

Uma boa tarde pra voces.

Reginaldo

Criado 28 de setembro de 2011
Ultima resposta 28 de set. de 2011
Respostas 7
Participantes 3