Split da String

E aí pessoal blz?

Bom estava fazendo uma aplicação quando me deparei com a situação quando usei o método split( … ).
Se eu uso:

String steste = "ABC|DEF";

String[] saux = steste.split( "|" );
      
for ( int i = 0; i < saux.length; i++ ) {
   System.out.println( saux[ i ] );
}

O código imprime:

A
B
C
D
E
F

Mas em uma oportunidade eu me lembro que vi que tinha que fazer da seguinte forma para ele quebrar a String corretamente.

String steste = "ABC|DEF";

String[] saux = steste.split( "\|" );
      
for ( int i = 0; i < saux.length; i++ ) {
   System.out.println( saux[ i ] );
}

Esse código imprime corretamente:

ABC
DEF

Não entendi o pq das duas barras invertidas. Alguém consegue me explicar???

Bom final de semana a todos
Valeu
[]'s

Vamos explicar direitinho.

A “|” sozinha é um caracter especial, usado em expressões regulares para expressar alternação. Exemplo:

“ISTO|AQUILO” se lê como “ou ISTO ou AQUILO”, ou seja, é uma expressão que bate com ISTO ou com AQUILO.

Se você puser “|” sozinha, então o split vai pensar que é “ou vazio ou vazio”, ou seja, bate com qualquer coisa na hora de fazer o split, e é por isso que acaba lhe voltando uma lista de todos os caracteres da string.

Entretanto, se você usar um “” antes de um caracter, o seu significado deixa de ser especial. Só que para você representar um “” em uma string no Java, é necessário duplicá-la, já que o próprio “” é especial (mas agora para o Java).

Então é por isso que você precisa usar “\|”.

OK? A história é comprida e chata, mas tem de ser contada. Não é tão complicada quanto a seqüência de eventos que levou à Proclamação da República, nem tão interessante, mas é o que você precisa saber.

[quote=thingol]Vamos explicar direitinho.

A “|” sozinha é um caracter especial, usado em expressões regulares para expressar alternação. Exemplo:

“ISTO|AQUILO” se lê como “ou ISTO ou AQUILO”, ou seja, é uma expressão que bate com ISTO ou com AQUILO.

Se você puser “|” sozinha, então o split vai pensar que é “ou vazio ou vazio”, ou seja, bate com qualquer coisa na hora de fazer o split, e é por isso que acaba lhe voltando uma lista de todos os caracteres da string.

Entretanto, se você usar um “” antes de um caracter, o seu significado deixa de ser especial. Só que para você representar um “” em uma string no Java, é necessário duplicá-la, já que o próprio “” é especial (mas agora para o Java).

Então é por isso que você precisa usar “\|”.

OK? A história é comprida e chata, mas tem de ser contada. Não é tão complicada quanto a seqüência de eventos que levou à Proclamação da República, nem tão interessante, mas é o que você precisa saber.
[/quote]

| = ou

Sim…concordo…

Mas se está entre “” ("|")…ele é lido como String…se fosse ‘|’ seria lido como char…e não como OU

Não?