On 09/24/2014 05:21 AM, monarch_dodra wrote:
On Wednesday, 24 September 2014 at 10:35:29 UTC, Suliman wrote:
I can't understand how to use strip? For example I would like to cut
just extension.

path = path.stripRight("exe");
Error: no overload matches for stripRight(C)(C[] str) if

strip doens't work that way. It simply removes leading/trailing white.

There's a version in std.algorithm which is more generic, but it accepts
either a predicate, or an element, but not a range.

Unfortunately, there is no generic function that allows striping of a
specific ending range (though there are ways to either detect it, or
strip it from the end).
If you want something generic, then:

     string path = "myFile.doc";
     string extension = ".doc";
     if (path.endsWith(extension))
         path = path[0 .. $ - extension.length];

Would work.

find() and friends can be used:

import std.algorithm;

void main()
{
    string path = "myFile.doc";
    string extension = ".doc";

    path = findSplitBefore(path, extension)[0];
    assert(path == "myFile");
}

And three retro()s make one modern(): :p

import std.algorithm;
import std.range;

void main()
{
    string path = "myFile.doc";
    string extension = ".doc";

    path = findSplitAfter(path.retro,
                          extension.retro)
           [1].retro;

    assert(path == "myFile");
}

Ali

Reply via email to