split with delimiter
bioinfornatics
bioinfornatics at fedoraproject.org
Sun Feb 19 18:04:42 PST 2012
Le vendredi 17 février 2012 à 02:00 +0100, Brad Anderson a écrit :
> On Friday, 17 February 2012 at 00:47:35 UTC, bioinfornatics wrote:
> > Le vendredi 17 février 2012 à 01:33 +0100, bioinfornatics a
> > écrit :
> >> reading
> >> http://www.d-programming-language.org/phobos/std_array.html#split
> >>
> >> ---------------------------------------------------
> >> S[] split(S)(S s); // merge space together
> >>
> >> and
> >>
> >> Unqual!(S1)[] split(S1, S2)(S1 s, S2 delim); // do not merge
> >> delim
> >> together ?
> >>
> >> ---------------------------------------------------
> >>
> >>
> >> why the second split function do not merge delim together?
> >> how merge delim together?
> >>
> >
> > Code to try
> > ----------------------
> > import std.string;
> > import std.stdio;
> > import std.array;
> >
> > void main( ){
> > string test = "hi\t\tD is fun";
> > string test2= "hi D is fun";
> > writeln( test.split("\t"));
> > writeln( test2.split() );
> > writeln( test2.split(" ") );
> > }
> > ----------------------
> > Result
> > ["hi", "", "D is fun"]
> > ["hi", "D", "is", "fun"]
> > ["hi", "", "D", "is", "fun"]
>
> I was talking with bioinfornatics on IRC so I can clarify a bit
> of what he's saying. std.array.split without delimiter merges
> runs of adjacent whitespace. In the version where you can
> specify the delimiter runs are not merged leaving empty items in
> the resulting array. This is because the delimiter specifying
> version just calls std.algorithm.splitter which doesn't merge
> runs whereas the whitespace version of std.array.split uses its
> own internal algorithm to split.
>
> Although the delimiter specifiable version's documentation
> doesn't say it would merge runs, one would assume it'd behave
> like its whitespace only cousin.
>
> Either the docs should be clarified or the function should be
> changed to work like the other version (I prefer the latter
> solution).
>
> Regards,
> Brad Anderson
Then, someone can tell if is bug ? if it will be fixed ?
More information about the Digitalmars-d-learn
mailing list