8069325: Pattern.splitAsStream does not return input if it is empty and there is no match

Xueming Shen xueming.shen at oracle.com
Tue Jan 20 17:35:27 UTC 2015

On 1/20/15 8:17 AM, Paul Sandoz wrote:
> Hi,
> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8069325-Pattern-splitAsStream-emptyInput/webrev/
> This patch fixes an edge case in Pattern.splitAsStream for matching against an empty input string, which deviated from the behaviour of Pattern.split. When there are no matches a stream containing the input string should be returned rather than an empty stream.
> --
> I have kept compatibility with Pattern.split(String ) but i noticed another an edge case.
> What should the following return:
>    Pattern.compile("").split("")
> [] or [""]?
> There is a zero-width match at the beginning and an empty remaining segment both of which should be discarded, as such i would expect the result to be [] rather than as [""], as currently produced result.

It may depend on how the "trailing empty string"  gets interpreted. Is 
it possible to interpret it as the
empty string is the result of the "substring from the beginning 0-width 
match and the end of the input
sequence", any thing after that is "trailing"?

It would be clear if the spec explicitly said, the result of splitting 
an empty input is an empty string.

I would assume someone, mostly the user of String.split(), will get hit 
by this "incompatible" change.

> If people agree that this is an issue i suggest we log a new one independent of fixing 8069325.
> Thanks,
> Paul.

More information about the core-libs-dev mailing list