在JavaScript中,可以使用正则表达式将匹配项作为参数的回调来替换字符串。
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中有这样的方法吗?我试着搜索,但没有找到任何有用的东西。
Delphi的TPerlRegEx
类有一个OnReplace
事件处理程序,每次替换都由Replace
和ReplaceAll
方法调用。您可以使用此事件处理程序来实现与在JavaScript中使用回调相同的效果。
此外,TRegEx.Replace
方法具有采用TMatchEvaluator
参数的重载。此类型是一个函数引用,与JavaScript中一样用作回调。