Delphi用回调替换字符串

时间:2013-11-28 20:37:59

标签: regex delphi replace callback delphi-xe2

在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中做这样的事情?我试图搜索但没有找到任何有用的东西。

1 个答案:

答案 0 :(得分:2)

Delphi的TPerlRegEx类有一个OnReplace事件处理程序,每个替换都由ReplaceReplaceAll方法调用。您可以使用此事件处理程序来实现与在JavaScript中使用回调相同的操作。

此外,TRegEx.Replace方法具有带TMatchEvaluator参数的重载。这个类型是一个函数引用,就像在JavaScript中一样用作回调。