commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Charles Honton (JIRA)" <>
Subject [jira] [Commented] (LANG-823) StringUtils.split should handle empty strings the same as other content
Date Thu, 26 Mar 2015 04:03:53 GMT


Charles Honton commented on LANG-823:

If StringUtils is just trying to make String well behaved for null inputs, then the following
unit test should pass:
    	assertArrayEquals("".split(","), StringUtils.split("", ",")); 

Currently, StringUtils.split("", ",") returns a zero length array and "".split(",") returns
a single element array containing the empty string.

> StringUtils.split should handle empty strings the same as other content
> -----------------------------------------------------------------------
>                 Key: LANG-823
>                 URL:
>             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
> 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
> 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

View raw message