Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Behaviour of String.split in java 1.6?

Tags:

java

split

java-6

My code is:

String s = "1;;;; 23;;";
System.out.println(s.split(";").length);

and gives as output 5. The source code of split is:

public String[] split(String regex) {
        return split(regex, 0);
    }

and the documentation says:

This method works as if by invoking the two-argument split(java.lang.String,int) method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

The string "boo:and:foo", for example, yields the following results with these expressions:

Regex Result
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

If I print the strings I have:

1



 23

Shouldn't I get from this 1;;;; 23;; something like {"1", "", "", "", " 23", ""} ?

like image 366
dierre Avatar asked Jun 27 '26 05:06

dierre


2 Answers

No, five is correct, as your quoted docs state:

Trailing empty strings are therefore not included in the resulting array.

Which is why the empty strings at the end of the array are omitted. If you want the empty strings, do as Evgeniy Dorofeev's answer says and specify a limit of -1.

like image 92
Fls'Zen Avatar answered Jun 28 '26 18:06

Fls'Zen


Since limit = 0 trailing empty strings are not included. Try

System.out.println(s.split(";", -1).length);

and you will get 7

like image 24
Evgeniy Dorofeev Avatar answered Jun 28 '26 19:06

Evgeniy Dorofeev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!