2014-10-04 15 views

risposta

15

In regex, | è un carattere riservato utilizzato per alternation. Devi scappare:

String out = string.split("\\|"); 

Nota che abbiamo usato due barre inverse. Questo perché il primo sfugge al secondo nella stringa Java, quindi la stringa passata al motore regex è \|.

+2

Oh grazie! Pensavo che uno sarebbe sfuggito con un backslash ma Android Studio mi ha detto che era un personaggio di fuga illegale, quindi ho pensato che non fosse necessario fuggire. Grazie! – Yharoomanner

+4

Per chiarire, non è che il carattere '|' significhi una stringa vuota. Significa "o". È solo che questo significa che la regex nella domanda si traduce in "una stringa vuota o una stringa vuota". – yshavit

+0

@Yharoomanner Si noti che la doppia barra rovesciata rappresenta un carattere barra retroversa nella stringa di input. Questo viene quindi passato al parser regex come stringa "\ |" che rappresenta un carattere di barra verticale. –

1

Credo che questo era già risposto in Java split string to array

In sintesi delle risposte nel link qui sopra:

String[] array = values.split("\\|",-1); 

Questo perché:

Questo metodo funziona come se invocando il metodo split a due argomenti con l'espressione data e un argomento limit di zero. Le stringhe vuote finali non sono quindi incluse nell'array risultante.

1

split prende un'espressione regolare, in cui | è un carattere speciale. Hai bisogno di fuggire con un backslash. Ma il backslash è un carattere speciale nelle stringhe Java, quindi è necessario sfuggire anche a questo.

myString.split("\\|") 
Problemi correlati