I have JavaScript from this source in a blog comment: frogsbrain
This is a string formatter, and it works great in Firefox, Google Chrome, Opera, and Safari. The only problem in IE is where the script does not replace at all. The result in both test cases in IE is just hi, nothing more.
Please help me get this script working in IE because I am not a Javascript guru and I just don’t know where to start looking for the problem.
I have posted the script here for convenience. All credits go to the Terence Honles for the script.
// usage:
// 'hello {0}'.format('world');
// ==> 'hello world'
// 'hello {name}, the answer is {answer}.'.format({answer:'42', name:'world'});
// ==> 'hello world, the answer is 42.'
String.prototype.format = function() {
var pattern = /({?){([^}]+)}(}?)/g;
var args = arguments;
if (args.length == 1) {
if (typeof args[0] == 'object' && args[0].constructor != String) {
args = args[0];
}
}
var split = this.split(pattern);
var sub = new Array();
var i = 0;
for (;i < split.length; i+=4) {
sub.push(split[i]);
if (split.length > i+3) {
if (split[i+1] == '{' && split[i+3] == '}')
sub.push(split[i+1], split[i+2], split[i+3]);
else {
sub.push(split[i+1], args[split[i+2]], split[i+3]);
}
}
}
return sub.join('')
}
source
share