我在博客的评论中看到了这个JavaScript代码:frogsbrain
它是一个字符串格式化函数,在Firefox、Google Chrome、Opera和Safari中工作正常。唯一的问题是IE中该脚本没有任何替换。两个测试用例在IE中的输出仅为'hello',没有其它。
请帮我让这个脚本在IE中也能正常工作,因为我不是JavaScript专家,不知道从哪里开始寻找问题。
以下是方便起见所贴出的脚本。所有功劳都归功于Terence Honles。
// 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('')
}