[Issue 5977] String splitting with empty separator

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Oct 22 02:52:30 PDT 2012


http://d.puremagic.com/issues/show_bug.cgi?id=5977


monarchdodra at gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |monarchdodra at gmail.com
         AssignedTo|nobody at puremagic.com        |monarchdodra at gmail.com


--- Comment #3 from monarchdodra at gmail.com 2012-10-22 02:52:16 PDT ---
(In reply to comment #0)
> This D2 program seems to go in infinte loop (dmd 2.053beta):
> 
> 
> import std.string;
> void main() {
>     split("a test", "");
> }
> 
> ------------------------
> 
> My suggestion is to add code like this in std.array.split():
> 
> if (delim.length == 0)
>     return split(s);
> 
> This means that en empty splitting string is like splitting on generic
> whitespace. This is useful in code like:
> 
> auto foo(string txt, string delim="") {
>     return txt.split(delim);
> }

I think it is a bad idea on two counts:

1. If the user wanted that behavior, he'd have written it as such. If the user
actually passed a seperator that is an empty range, he probably didn't mean for
it split by spaces.

2. I think it would also bring a deviation of behavior between strings and
non-strings. Supposing r is empty:
* "hello world".split(""); //Ok, split white
* [1, 2].split(r); //Derp.

(In reply to comment #1)
> Alternative: throw an ArgumentError("delim argument is empty") exception if
> delim is empty.

I *really* think that is a *much* saner approach. Splitting with an empty
separator is just not logic. Trying to force a default behavior in that
scenario is wishful thinking (IMO).

I think it should throw an error. I'll implement this.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list