我有这个默认字符串:{0} blah blah blah blah {1}
其中{0}
和{1}
将在文本框中加载时替换为值。
示例:如果{0} = "CUP"
和{1} = "GIRLS"
,则文本框中显示的字符串为"CUP blah blah blah blah GIRLS"
现在问题是:当用户编辑默认消息并点击"保存"时,如何替换{0} =" CUP"和{1} =" GIRLS"在修改过的消息中? (消息的变化可能发生在原始消息的任何部分中)
答案 0 :(得分:1)
使用 String#replace()
方法
console.log(
'{0} blah blah blah blah {1}'
.replace(/\{0}/, 'CUP')
.replace(/\{1}/, 'GIRLS')
)

或者在数组中存储替换内容,然后用匹配的内容替换(偶数对象可以在这里使用)。
var rep = ['CUP', 'GIRLS'];
console.log(
'{0} blah blah blah blah {1}'
.replace(/\{(\d+)}/g, function(_, m1) {
return rep[m1];
})
)

更新: 带有两个文本输入的工作演示。
var div = document.getElementById('result'),
t1 = document.getElementById('text1'),
t2 = document.getElementById('text2'),
str = '{0} blah blah blah blah {1}';
function change() {
div.innerHTML = str
.replace(/\{0}/, t1.value)
.replace(/\{1}/, t2.value)
}

<input type="text" oninput="change()" id="text1" />
<input type="text" oninput="change()" id="text2" />
<div id="result"></div>
&#13;
答案 1 :(得分:1)
您可以调用自定义替换功能:
var replace = function(s,d) {
return s.replace(/\{(\d+)\}/g,function(m,k,v){
return d[k];
});
}
var result = replace("{0} blah blah blah blah {1}", ["hello", "world"]);
console.log(result);
//Returns: hello blah blah blah blah world
或者您可以将此方法添加到字符串类(不推荐)
String.prototype.rplc = function(data) {
return this.replace(/\{(\d+)\}/g,function(m,k,v){
return data[k];
});
}
var result = "{0} blah blah blah blah {1}".rplc(["hello", "world"]);
console.log(result);
//Returns: hello blah blah blah blah world