我想知道如何用不同的文本替换每场比赛? 假设源文本是:
var strSource:String = "find it and replace what you find.";
..我们有一个正则表达式,如:
var re:RegExp = /\bfind\b/g;
现在,我需要用不同的文本替换每个匹配项(例如):
var replacement:String = "replacement_" + increment.toString();
所以输出结果如下:
output = "replacement_1 it and replace what you replacement_2";
感谢任何帮助..
答案 0 :(得分:3)
你也可以使用替换函数,如下所示:
var increment : int = -1; // start at -1 so the first replacement will be 0
strSource.replace( /(\b_)(.*?_ID\b)/gim , function() {
return arguments[1] + "replacement_" + (increment++).toString();
} );
答案 1 :(得分:1)
我最终想出了一个解决方案.. 如果有人需要,就在这里:
var re:RegExp = /(\b_)(.*?_ID\b)/gim;
var increment:int = 0;
var output:Object = re.exec(strSource);
while (output != null)
{
var replacement:String = output[1] + "replacement_" + increment.toString();
strSource = strSource.substring(0, output.index) + replacement + strSource.substring(re.lastIndex, strSource.length);
output = re.exec(strSource);
increment++;
}
非常感谢...
答案 2 :(得分:0)
不使用g(全局)标志,并使用相应的替换字符串重复搜索。循环直到搜索失败
答案 3 :(得分:0)
不确定actionscript,但在许多其他正则表达式实现中,您通常可以传递一个回调函数,该函数将为每个匹配执行逻辑并替换。