On Sat, 23 Jun 2012 18:56:24 +0200, simendsjo <[email protected]> wrote:

On Sat, 23 Jun 2012 18:50:05 +0200, Chad J <chadjoan@__spam.is.bad__gmail.com> wrote:

Looking for findSplit? http://dlang.org/phobos/std_algorithm.html#findSplit
 Cool, that's what I want!
Now if I could find the elegant way to remove exactly one line from the text without scanning the text after it...

Isn't that exactly what findSplit does? It doesn't have to search the rest of the string after the match, it just returns a slice of the rest of the array (I guess - haven't read the code)


import std.stdio, std.algorithm;

void main() {
    auto text = "1\n2\n3\n4";
    auto res = text.findSplit("\n");

    auto pre = res[0];
    assert(pre.ptr == text.ptr); // no copy for pre match

    auto match = res[1];
    assert(match.ptr == &text[1]); // no copy for needle

    auto post = res[2];
    assert(post.ptr == &text[2]); // no copy for post match
    assert(post.length == 5);
}

Reply via email to