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 =
答案 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();