2013-01-19 9 views
74

Potrzebuję pomocy z metodą split(). Mam następujący String:Łańcuch podzielony Java na tablicę

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

muszę umieścić wartości w tablicy. Możliwe są 3 ciągi: "0", "1" i ""

Mój problem jest, gdy próbuję użyć split():

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

moje wartości są zapisywane tylko do ostatniego 0. Wydaje podobnie jak część "|||" zostanie przycięte. Co robię źle?

dziękuję

Odpowiedz

115

To zachowanie jest wyraźnie udokumentowane String.split(String regex) (kopalni nacisk)

ten sposób działa jak za wywoływanie metody podziału dwóch argumentów do danego słowa i argumentu granicznej zera. Ciągi pustych ciągów znaków są zatem niewłączone w wynikowej tablicy.

Jeśli chcesz te końcowe puste struny włączone, trzeba użyć String.split(String regex, int limit) z wartością ujemną dla drugiego parametru (limit):

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

Dziękuję, to jest dokładnie to, co potrzebne. Tablica ciągów [] = myValues.split ("\\ |", -1); – Dusan

1

To jest oczekiwane. Patrz Javadocs dla .

Splits this string around matches of the given regular expression. 

ten sposób działa jak za wywoływanie dwudzielna argumentu metody (java.lang.String int) z danym wyrazem i argumentu granicznej zera. Ciągi kończące puste ciągi nie są więc uwzględniane w wynikowej tablicy.

23

Spróbuj

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

Rozważ to przykład:

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] 
    } 
} 

Wynik nie zawiera pustych ciągów między "|" separator. Aby utrzymać pustych strun:

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, , , ] 
    } 
} 

Aby uzyskać więcej informacji, przejdź do strony: http://www.rgagnon.com/javadetails/java-0438.html

Powiązane problemy