Tutorial :Replace each RegExp match with different text in ActionScript 3



Question:

I'd like to know how to replace each match with a different text? Let's say the source text is:

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

..and we have a regex such as:

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

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

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

So the output would be something like:

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

Any help is appreciated..


Solution:1

You could also use a replacement 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();  } );  


Solution:2

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

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...


Solution:3

leave off the g (global) flag and repeat the search with the appropriate replace string. Loop until the search fails


Solution:4

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


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »