Looking for help in matching the curly brackets in a regular expression pattern.
I’ve tried different combinations of escapes, and symbol matching with little luck. Perhaps because it’s Friday afternoon and I’m overlooking something; but your ideas would be greatly appreciated. The code below:
function stringFormat(str, arr) {
for (var i = 0; i < arr.length; i++) {
var regExp = new RegExp('^\{' + i + '\}$', 'g');
str = str.replace(regExp, arr[i]);
}
return str;
}
var str = '<p>The quick {0}, brown {1}</p>';
$('#test').html(stringFormat(str, ['brown', 'fox']));
I’ve also started a fiddle on this, http://jsfiddle.net/rgy3y/1/
Instead of trying to match a bunch of different numbers, why not just do it all in one fell swoop:
On your example,
This has the benefit that nothing weird will happen if
arrcontains a string like ‘{1}’. E.g.stringFormat('{0}', ['{1}', 'foo']) === '{1}'consistently instead of'foo'as with the fixed version of the original, but inconsistently withstringFormat('{1}', ['foo', '{0}']) === '{0}'