[
https://issues.apache.org/jira/browse/LANG-823?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18048607#comment-18048607
]
Gary D. Gregory commented on LANG-823:
--------------------------------------
Hello [~abhik002]
{quote}
Sharing the same view as the comment by [~chonton], for curiosity may I please
know why have we kept a different behaviour for {{*StringUtils.split*}} from
the native {{*String.split*}} method in case of empty strings?
{quote}
There was no intent to diverge from JRE, AFAIK. However, the behavior is
markedly different: The JRE method works with _regular expressions_, the
{{split(String, String)}} method and friends only work with _separator
characters_. If you think the two are interchangeable, you'll create bugs.
Today, the only reason to keep it as is is behavioral compatibility.
It's worth discussing whether this can be changed. You might want to start a
discussion on the user's mailing list.
> StringUtils.split should handle empty strings the same as other content
> -----------------------------------------------------------------------
>
> Key: LANG-823
> URL: https://issues.apache.org/jira/browse/LANG-823
> Project: Commons Lang
> Issue Type: Improvement
> Components: lang.*
> Affects Versions: 2.5
> Reporter: Mark Farnsworth
> Assignee: Benedikt Ritter
> Priority: Minor
> Fix For: Review Patch, Discussion, 3.x
>
> Attachments: LANG-823.patch, LANG-823.test.patch
>
>
> When a user issues a split with a delimiter and the string does not contain
> the delimiter the result is normally an array with one item that contains the
> content of the string.
> It seems strange that StringUtils does not behave consistently in the context
> of an empty string.
> For example,
> {code}
> package maf.test;
> import junit.framework.TestCase;
> import org.apache.commons.lang.StringUtils;
> public class StringUtilsTest extends TestCase {
> public void testStringUtils() {
> // The following two lines work correctly
> assertTrue(StringUtils.split("x",",")[0].equals("x"));
> assertTrue(StringUtils.split(" ",",")[0].equals(" "));
>
> // The following should also work but
> // in commons-lang-2.5.jar the test fails here
> assertTrue(StringUtils.split("",",")[0].equals(""));
> }
> }
> {code}
> There seems to be no logic behind making split work differently in the case
> of empty strings.
> For the next release, I would suggest a behavior change for StringUtils this
> will have side effects but would be more logically consistent.
> Users who depend on the old behavior could stick with 2.5 release and/or
> implement code in the caller to simulate the behavior.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)