Java-String split-Methode ignoriert leere Teilstrings
Kam mir heute das Verhalten von java - String.split()
ist sehr seltsam.
Eigentlich möchte ich aufteilen einer Zeichenfolge "aa,bb,cc,dd,,,ee"
array von .split(",")
das gibt mir ein String-array ["aa","bb","cc","dd","","","ee"]
der Länge 7.
Aber wenn ich versuche, split ein String "aa,bb,cc,dd,,,,"
zu array gibt mir ein array mit der Länge 4, d.h. nur ["aa","bb","cc","dd"]
Ablehnung aller nächste leere Strings.
Möchte ich eine Prozedur, teilt eine Zeichenfolge wie "aa,bb,cc,dd,,,,"
array ["aa","bb","cc","dd","","",""]
.
Ist das möglich mit java.lang.String api? Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
- String.split(String regex, int limit)
mit negativen Grenzwert (z.B. -1).Wenn
- String.split(String regex)
genannt wird, heißt es mitlimit
= 0, das entfernt alle leere strings im array (in den meisten Fällen, siehe unten).Dem tatsächlichen Verhalten der
String.split(String regex)
ist ziemlich verwirrend:";"
oder";;;"
mitregex
wird";"
wird ein leeres array. Nicht-leeren string split führen, alle leere strings in dem array entfernt.Über das Verhalten beobachtet werden kann, aus mindestens Java 5 bis Java 8.
Es wurde ein Versuch zur änderung des Verhaltens gibt ein leeres array zurück, wenn man einen leeren string in JDK-6559590. Es wurde jedoch bald rückgängig gemacht, in JDK-8028321, wenn es bewirkt, dass regression in verschiedenen Orten. Die änderung macht es nie in die erste Java-8-release.
Können Sie
public String[] split(String regex, int limit)
:Drucke: