在ActionScript 3中将每个RegEx匹配替换为不同的文本

时间:2009-05-26 21:10:18

标签: regex actionscript-3 replace

我想知道如何用不同的文本替换每场比赛? 假设源文本是:

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";

感谢任何帮助..

4 个答案:

答案 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,但在许多其他正则表达式实现中,您通常可以传递一个回调函数,该函数将为每个匹配执行逻辑并替换。