2009-08-20 8 views
11

Diciamo che hanno una stringa ...String spaccato domanda utilizzando "*"

String myString = "my*big*string*needs*parsing"; 

Tutto quello che voglio è quello di ottenere una ripartizione della stringa in "mio", "grande", "string", etc. così cerco

myString.split("*"); 

rendimenti java.util.regex.PatternSyntaxException: ciondolanti meta carattere '*' vicino indice 0

* è un carattere speciale in regex così ho prova a scappare ....

myString.split("\\*"); 

stessa eccezione. Ho pensato che qualcuno avrebbe saputo una soluzione rapida. Grazie.

+0

destra \\ * funziona, stavo usando da una serie ... myArray [x] .split ("\\ * "); e lanciava un'eccezione, ma se io trasformassi myArray [x] prima in una stringa e poi la eseguissi funziona ... grazie per le risposte :) – OHHAI

+0

intendo doppio \ nel commento sopra .... – OHHAI

+0

Vuoi mente dando la chiusura di questa domanda selezionando una risposta corretta? – extraneon

risposta

16

split("\\*") funziona con me.

+0

\\ * funziona anche per me! –

0

myString.split("\\*"); funziona perfettamente su Java 5. Quale JRE usi.

+0

La singola barra non funzionerà; \ * non è un personaggio speciale. Penso che tu abbia fatto un refuso :) – extraneon

5

Una fuga \ non farà il trucco in Java 6 su Mac OSX, come \ è riservato per \b \t \n \f \r \'\" e \\. Quello che devi sembra funzionare per me:

public static void main(String[] args) { 
    String myString = "my*big*string*needs*parsing"; 
    String[] a = myString.split("\\*"); 
    for (String b : a) { 
     System.out.println(b); 
    } 
} 

uscite:

mia
grande
stringa
bisogno
parsing

0

È possibile anche utilizzare un StringTokenizer.

StringTokenizer st = new StringTokenizer("my*big*string*needs*parsing", "\*"); 
while (st.hasMoreTokens()) { 
    System.out.println(st.nextToken()); 
} 
0

Ciò accade perché il metodo di divisione prende un'espressione regolare, non una stringa semplice.

Il carattere '*' significa che corrisponde allo zero del carattere precedente o più volte, quindi non è valido specificarlo da solo.

Così dovrebbe essere sfuggito, come seguire

split("\\*")