2013-01-19 19 views
74

Ho bisogno di aiuto con il metodo split(). Ho la seguente String:Java split stringa all'array

String values = "0|0|0|1|||0|1|0|||"; 

devo mettere i valori in una matrice. Ci sono 3 possibili stringhe: "0", "1", e ""

Il mio problema è che quando cerco di usare split():

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

I miei valori sono salvati solo fino a quando l'ultimo 0. Sembra mi piace la parte "|||" viene tagliato. Cosa sto sbagliando?

grazie

risposta

115

Questo comportamento è esplicitamente documentata in String.split(String regex) (sottolineatura mia):

Questo metodo funziona come se richiamando il metodo split due argomenti con l'espressione data e un argomento limite pari a zero. Le stringhe vuote finali sono pertanto non incluse nello nell'array risultante.

Se si desidera che tali finali stringhe vuote inclusi, è necessario utilizzare String.split(String regex, int limit) con un valore negativo per il secondo parametro (limit):

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

Grazie, questo è esattamente quello che mi serviva. Array di stringhe [] = myValues.split ("\\ |", -1); – Dusan

1

questo è previsto. Vedere Javadocs per split.

Splits this string around matches of the given regular expression. 

Questo metodo funziona come se invocando la spaccatura due argomenti metodo (java.lang.String, int) con l'espressione data e un argomento limite pari a zero. Le stringhe vuote finali non sono quindi incluse nell'array risultante.

23

Prova questa

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

considerare questo esempio:

public class StringSplit { 
    public static void main(String args[]) throws Exception{ 
    String testString = "Real|How|To|||"; 
    System.out.println 
     (java.util.Arrays.toString(testString.split("\\|"))); 
    // output : [Real, How, To] 
    } 
} 

Il risultato non include le stringhe vuote tra "|" separatore. Per mantenere le stringhe vuote:

public class StringSplit { 
    public static void main(String args[]) throws Exception{ 
    String testString = "Real|How|To|||"; 
    System.out.println 
     (java.util.Arrays.toString(testString.split("\\|", -1))); 
    // output : [Real, How, To, , , ] 
    } 
} 

Per maggiori informazioni vai a questo sito web: http://www.rgagnon.com/javadetails/java-0438.html