Find and replace tokens in javascript

I need to do something like this

string  = " this is a good example to show"

search  = array {this,good,show}

      

find and replace them with a token like

string  = " {1} is a {2} example to {3}" (order is intact)

      

the string will undergo some processing and then

string  = " {1} is a {2} numbers to {3}" (order is intact)

      

tokens are replaced with a string character again, so the string becomes

string  = " this is a good number to show"

      

how to make sure the pattern is matched and the same tokens replaced

eg / [gG] ood / is a pattern to find and replace later with the appropriate "case". Or in other words, if ^ \ s * [0-9] +. this is a template that must be saved and replaced to form the original text as it was

How do you do this so that the process runs at high performance?

Thanks in advance.

+2


a source to share


2 answers


You don't mention anything about multiple occurrences of the same token in a string, I think you will replace all occurrences.

It will look something like this:



var string = "This is a good example to show, this example to show is good";
var tokens = ['this','good','example'];

for (var i = 0; i < tokens.length; i++) {
    string.replace(new RegExp(tokens[i], "g"),"{"+i+"}");
}
// string processing here
for (var i = 0; i < tokens.length; i++) {
    string.replace(new RegExp("{"+i+"}","g"),tokens[i]);
}

      

+6


a source


var string = "this is a good example to show"
var search = ["this","good","show"] // this is how you define a literal array

for (var i = 0, len = search.length; i < len; i++) {
   string.replace(RegExp(search[i], "g"), "{" + (i+1) + "}")
}

//... do stuff

string.replace(/\{(\d+)\}/, function(match, number) {
  if (+number > 0)
    return search[+number - 1];
});

      



+7


a source







All Articles