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 to share
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 to share