Chris Cain:

string stripPar(string S)
{
        while(S[0] == '(' && S[S.length-1] == ')')
        {
        
              S = S[1 .. $ - 1];
        }

        return S;
}

For better compatibility with Unicode it's better to use .front .back .popFront and .popBack. You can also make it pure and @safe, and take any string in input.

Not much tested:


import std.array, std.traits;

C1[] stripPar(C1, C2)(C1[] txt, in C2 open = '(', in C2 close=')')
@safe pure if (isSomeChar!C1 && isSomeChar!C2) {
    while (txt.front == open && txt.back == close) {
        txt.popFront;
        txt.popBack;
    }

    return txt;
}

void main() {
    import std.stdio;

    "[[()()()()]"d.stripPar('[', ']').writeln;
}


Bye,
bearophile

Reply via email to