更改默认字符串内容

时间:2016-06-10 06:42:20

标签: javascript jquery

我有这个默认字符串:{0} blah blah blah blah {1}其中{0}{1}将在文本框中加载时替换为值。

示例:如果{0} = "CUP"{1} = "GIRLS",则文本框中显示的字符串为"CUP blah blah blah blah GIRLS"

现在问题是:当用户编辑默认消息并点击"保存"时,如何替换{0} =" CUP"和{1} =" GIRLS"在修改过的消息中? (消息的变化可能发生在原始消息的任何部分中)

2 个答案:

答案 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;
&#13;
&#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