Replace each RegExp match with different text in ActionScript 3

I would like to know how to replace each match with a different text? Let's say the original text:

var strSource:String = "find it and replace what you find.";

      

.. and we have a regex like:

var re:RegExp = /\bfind\b/g;

      

Now I need to replace each match with a different text (for example):

var replacement:String = "replacement_" + increment.toString();

      

Thus, the result will be something like this:

output = "replacement_1 it and replace what you replacement_2";

      

Any help is appreciated.

0


a source to share


4 answers


I finally came up with a solution. Here it is, if anyone needs it:

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++;
}

      



Thanks anyway...

+1


a source


You can also use a replace function, something like this:



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();
} );

      

+3


a source


leave the g (global) flag and search again with the appropriate replacement string. Loop until the search is complete

0


a source


Not sure about actionscript, but in many other regex implementations, you can usually pass a callback function that will execute the logic for each match and replace.

0


a source







All Articles