以编程方式替换数组(字符串)中的元素

时间:2014-07-10 21:17:29

标签: d

D的phobos库是否提供类似于std.array.replace的函数,它可以通过函数替换数组中的元素而不是所有替换的单个值?例如:

string[] params = ["Apple", "Orange", "Pear"];
int pnum = 0;
string psub() {
    if (pnum < params.length)
        return params[pnum++];
    return "";
}
writeln(replace("Test 1=? 2=? 3=? 4=?", "?", psub));

结果测试1 = Apple 2 = Apple 3 = Apple 4 = Apple 当所需结果当然测试1 = Apple 2 =橙色3 = Pear 4 =

1 个答案:

答案 0 :(得分:1)

您可以使用std.regex中的replaceAll

writeln(replaceAll!(s => psub())("Test 1=? 2=? 3=? 4=?", `\?`));

或者,您可以使用splitter和范围:

zip(StoppingPolicy.longest, "Test 1=? 2=? 3=? 4=?".splitter("?"), params)
    .map!(a => only(a.expand))
    .joiner()
    .joiner()
    .writeln();