假设我的 javascript 代码中有以下字符串:
var myText = 'Hello %1. How are you %2?';
现在我想在上面的字符串中注入一些东西来代替 %1 和 %2 。我可以:
var result = myText.replace('%1', 'John').replace('%2', 'today');
我想知道是否有比调用 2 次替换函数更好的方法。
谢谢。
假设我的 javascript 代码中有以下字符串:
var myText = 'Hello %1. How are you %2?';
现在我想在上面的字符串中注入一些东西来代替 %1 和 %2 。我可以:
var result = myText.replace('%1', 'John').replace('%2', 'today');
我想知道是否有比调用 2 次替换函数更好的方法。
谢谢。
小format
帮手怎么样?这基本上就是你需要的:
function format(str, arr) {
return str.replace(/%(\d+)/g, function(_,m) {
return arr[--m];
});
}
var myText = 'Hello %1. How are you %2?';
var values = ['John','today'];
var result = format(myText, values);
console.log(result); //=> "Hello John. How are you today?"
演示:http: //jsbin.com/uzowuw/1/edit
试试这个样本
function setCharAt(str,chr,rep) {
var index = -1;
index= str.indexOf(chr);
var len= chr.length;
if(index > str.length-1) return str;
return str.substr(0,index) + rep + str.substr(index+len);
}
var myText = 'Hello %1. How are you %2?';
var result = setCharAt(myText,"%1","John");
var result = setCharAt(result,"%2","today");
alert(result);
这只是对 elclarns 出色答案的复杂评论,提出了以下替代方案:
String.prototype
arguments
该功能可以更改为
String.prototype.format = function() {
var args=arguments;
return this.replace(/%(\d+)/g, function(_,m) {
return args[--m];
});
}
并以这种方式调用
var result = "I am %1, %2 years old %1".format("Jan",32);
// I am Jan, 32 years old Jan