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 ?