在JavaScript中,replace字符串可以使用正则表达式将匹配作为参数进行回调。
function replacer(match, p1, p2, p3, offset, string){
// p1 is nondigits, p2 digits, and p3 non-alphanumerics
return [p1, p2, p3].join(' - ');
};
newString = "abc12345#$*%".replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
有没有办法在Delphi中做这样的事情?我试图搜索但没有找到任何有用的东西。
答案 0 :(得分:2)
Delphi的TPerlRegEx
类有一个OnReplace
事件处理程序,每个替换都由Replace
和ReplaceAll
方法调用。您可以使用此事件处理程序来实现与在JavaScript中使用回调相同的操作。
此外,TRegEx.Replace
方法具有带TMatchEvaluator
参数的重载。这个类型是一个函数引用,就像在JavaScript中一样用作回调。