2013-05-01 20 views
5

Sto cercando di analizzare alcuni dati utilizzando Java, che è separato da '|' sequenza. Di seguito è riportato un esempio dei dati.Stringa Java divisa da "|"

String s = "111206|00:00:00|2|64104|58041"; 
String [] temp = s.split("|"); 
for(String p: temp) 
System.out.println(p); 

Ma invece di dividere in "|" separa ogni personaggio separatamente. Ecco l'output che ottengo per il codice sopra.

1 
1 
1 
2 
0 
6 
| 
0 
0 
: 
0 
0 
: 
0 
0 
| 
2 
| 
6 
4 
1 
0 
4 
| 
5 
8 
0 
4 
1 

Ho trovato un giro sostituendo il '|' da ',' nella riga, ma la patch di codice verrà eseguita molte volte e voglio ottimizzarla.

String s = "111206|00:00:00|2|64104|58041"; 
s = s.replace('|', ','); 

Voglio solo sapere qual è il problema con '|' ??

risposta

11

è necessario utilizzare:

String [] temp = s.split("\\|"); 

Questo perché il metodo split prende un'espressione regolare, e | è uno dei caratteri speciali. Significa "o". Ciò significa che stai dividendo per '' or '', che è solo ''. Pertanto si dividerà tra ogni personaggio.

Hai bisogno di due barre in quanto il primo è per sfuggire l'attuale \ nella stringa, dal momento che è \ carattere di escape di Java in una stringa. Java comprende la stringa come "\|" e l'espressione regolare lo capisce come "|".

+1

I punti rep più semplici evar! – jahroy

+0

@jahroy [FGITW] (http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem) :) – Doorknob

+0

Modo perfetto, più bello e più semplice. –

Problemi correlati