这是因为在DMD2中,std.array.replace函数的参数列表已经改变,不再支持传入比较函数作为第四个参数。因此,您需要使用std.algorithm.replace函数来替换字符串。

以下是修改后的代码:

import std.algorithm; import std.string; import std.stdio;

bool caseSensitiveCompare(string a, string b) { return a == b; }

bool caseInsensitiveCompare(string a, string b) { return toLower(a) == toLower(b); }

void main() { string str = "Hello World"; string oldStr = "world"; string newStr = "Dlang";

// 不区分大小写替换
auto replaceResult = replace(str, oldStr, newStr, &caseInsensitiveCompare);
writeln(replaceResult);  // 输出: Hello Dlang

// 区分大小写替换
replaceResult = replace(str, oldStr, newStr, &caseSensitiveCompare);
writeln(replaceResult);  // 输出: Hello World

// 使用std.algorithm.replace函数进行替换
replaceResult = replace(str, oldStr, newStr, &caseInsensitiveCompare);
writeln(replaceResult);  // 输出: Hello Dlang

}

使用std.algorithm.replace函数,您可以传递一个谓词函数来进行比较。在上面的代码中,我们使用caseInsensitiveCompare函数来进行不区分大小写的比较


原文地址: http://www.cveoy.top/t/topic/fml9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录