Here is a function that can be used to replace JavaScript variable name (object property, or array element) from string with its associated value defined in JavaScript, using RegExp.
// Function that replace token from string with equivalent variable value
// Receives the string-template. Returns that string with variable names replaced
function replaceStrVar(str){
// JavaScript & jQuery Courses - https://coursesweb.net/javascript/
str = str.replace(/%(.*?)%/gi, function(a,b) {
// if token is an array item, else, is object property, or variable
if(b.match(/[a-z0-9_]+\[[a-z0-9_]+\]/i)) {
var arritm = b.match(/([a-z0-9_]+)\[([a-z0-9_]+)\]/i); // gets an array with the matched items
return window[arritm[1]][arritm[2]];
}
else {
var voitm = b.split('.');
return (voitm.length == 2) ? window[voitm[0]][voitm[1]] : window[voitm[0]];
}
});
return str;
}
- The names for variable /array /object.property in the string must be added within %...% .
This function can be used to create a simple template-string in JavaScript.
Here's an example of replaceStrVar() function usage, using a variable, an array, and object, and a string (template) with their names that will be replaced with their values and the result is added into a HTML element.
<div id="testpl">String Template:<br/><span class="sbi">The website: <b>%website%</b> contains: %obj.content1%, and it has around <b>%visits[2]%</b> uniques visitors /day.</span></div>
<button onclick="testpl()">Test replaceStrVar()</button>
<script type="text/javascript"><!--
// Function that replace token from string with equivalent variable value
function replaceStrVar(str){
// JavaScript & jQuery Courses - https://coursesweb.net/javascript/
str = str.replace(/%(.*?)%/gi, function(a,b) {
// if token is an array item, else, is object property, or variable
if(b.match(/[a-z0-9_]+\[[a-z0-9_]+\]/i)) {
var arritm = b.match(/([a-z0-9_]+)\[([a-z0-9_]+)\]/i); // gets an array with the matched items
return window[arritm[1]][arritm[2]];
}
else {
var voitm = b.split('.');
return (voitm.length == 2) ? window[voitm[0]][voitm[1]] : window[voitm[0]];
}
});
return str;
}
/* Test replaceStrVar() function */
var website = 'https://coursesweb.net'; // simple variable
var visits = new Array(100, 1000, 2000); // array
// object
var obj = new Object();
obj.content1 = 'Web Programming Courses';
obj.content2 = 'Web Development Tutorials';
// The string (template)
var tpl = 'The website: <b>%website%</b> contains: %obj.content1%, and it has around <b>%visits[2]%</b> uniques visitors /day.';
// adds the replacement in #testpl HTML element
function testpl(){
document.getElementById('testpl').innerHTML = replaceStrVar(tpl);
}
//-->
</script>
Results:
String Template: The website: <b>%website%</b> contains: %obj.content1%, and it has around <b>%visits[2]%</b> uniques visitors /day.