2016-03-28 5 views
0

Wie kann ich die Anzahl der Werte in einem String, die durch ein Semikolon getrennt sind (einschließlich leerer Werte), erfolgreich zählen?Zählen Sie die Anzahl der Werte in einem String mit .split (";")

Ich habe zum Beispiel diesen String:

;;C;D;E;F;G 

Die korrekte Anzahl der Werte würden ‚7‘ sein, aber wenn ich .split verwenden gibt es die falsche Nummer, wegen der leeren Werte.

Wie kann ich das beheben?

+3

'System.out.println ("; C; D; E; F; G ".split ("; "). Länge);' druckt '7' zu mir. – Pshemo

+1

Es druckt mir auch '7'. Es ist sicherlich ein Fehler mit der Art, wie du Elemente zählst. –

+0

Dito mit den beiden oben. Ich bekomme auch eine Länge von 7. Wie ist deine Methode um die Elemente zu zählen? – kevingreen

Antwort

3

Beispiel aus Ihrer Frage seit

System.out.println(";;C;D;E;F;G".split(";").length); 

drucken 7 gut funktioniert.

Aber Problem könnte auftreten, wenn leere Elemente am Ende der Zeichenfolge wie

System.out.println(";;C;D;E;F;G;;".split(";").length); 

sind die auch7 zurückkehren würde. Warum das? Da split(regex) verwendet split(regex,limit) Version mit limit auf 0. Dieses Limit repräsentiert das Split-Verhalten, bei dem nachfolgende leere Elemente entfernt werden.

Wenn Sie nicht wollen, leere Elemente wie negative Grenze

System.out.println(";;C;D;E;F;G;;".split(";", -1).length); 
//           ^^-negative limit 

verwenden Hinter entfernen, die jetzt 9 gedruckt wird.

+3

Deine Gedanken lesen Kraft sind stark;) –

2

String#split() zurückkehren kann, weil der Leerwerte eine falsche Nummer zurück nur dann, wenn die Separatoren am Heck des Textes sind, z.B. ";;C;D;E;F;G;;". Um zu vermeiden, dass die Verwendung text.split(regex, -1)

Verwandte Themen