http://dlang.org/phobos/std_array.html#splitter

The first thing I don't understand is why splitter is in /std.array/ and yet only works on /strings/. It is defined in terms of whitespace, and I don't understand how whitespace is well-defined for things besides text. Why wouldn't it be in std.string?

That said, I'd like to split on something that isn't whitespace. So where's "auto splitter(C)(C[] s, C[] delim)"?? Is there a hole in functionality?

The next thing I want to do is split on whitespace, but only once, and recover the tail. I want to write this function:

string snip(string text)
{
        string head, tail;
        head = getHead(text, "// -- snip --", tail);
        return tail;
}

I would expect these functions to exist:
auto getHead(C)(C[] s, C[] delim, ref C[] tail);
auto getHead(C)(C[] s, C[] delim);
auto getTail(C)(C[] s, C[] delim);

Maybe even this, though it could be a bit redundant:
auto getTail(C)(C[] s, C[] delim, ref C[] head);

Do these exist in phobos? Otherwise, is it a hole in the functionality or some kind of intentional design minimalism?

Reply via email to