我只想基于模式替换字符串中的所有参数:

例如:

var myString = "Hello Mr.{param1}, today is {param2} and hope ...";

我不知道如何找到{#}模式并用JavaScript中的值替换。

===============>>#1 票数:2 已采纳

function replace(str, params) {
    for(var i in params)
        if(params.hasOwnProperty(i))
            str = str.replace('{'+i+'}', params[i]);
    return str;
}
replace("Hello Mr.{param1}, today is {param2} and hope ...", {
    param1: 'foo',
    param2: 'bar'
}); // "Hello Mr.foo, today is bar and hope ..."

请注意,只有每个参数的第一次出现都会被替换。


如果要替换所有出现的内容,请replace使用

str = str.replace(
    new RegExp(
        ('{'+i+'}').replace(/[.^$*+?()[{\|]/g, '\\$&'),
        'g'
    ),
    params[i]
);

===============>>#2 票数:2

像这样向String原型添加一个format()函数:

String.prototype.format = function() {
    var s = this;
    for (var i = 0; i < arguments.length; i++) {
        var reg = new RegExp("\\{" + i + "\\}", "gm");
        s = s.replace(reg, arguments[i]);
    }

    return s;
};

然后,您可以在像这样的任何字符串上调用format()

var myString = 'Hello Mr. {0}, today is {1} and hope ...';
var formattedString = myString.format('John Doe', 'April, 19, 2014');

formattedString将是: Hello Mr. John Doe, today is April, 19, 2014 and hope ...

===============>>#3 票数:1

您可以将regex与replace一起replace ,类似以下这样:

function format(str, obj) {
  var re = /\{(.+?)\}/g;
  return str.replace(re, function(_,m){return obj[m]});
}

并像这样使用它:

format('Hello, my name is {name}, I am {age} years old', {
  name: 'Peter',
  age: '30'
});
//^ Hello, my name is Peter, I am 30 years old.

  ask by Nav translate from so

未解决问题?本站智能推荐:

5回复

Javascript模式替换

我有一个这样的物体 现在,我需要一个函数,该函数将接收我的对象并借助其模式将其作为字符串返回。 预期结果: "Name: John<br>Surname: Doe<br>Location: LA" 我无法使用JavaScript的replace方法来做
2回复

用于替换JavaScript模式的RegEx

我有大量的html文件,表达式如下: 我想消除eval表达式并只执行代码,换句话说,将其更改为: 任何人都可以帮助我。 我试图找到一个解决方案,但我只知道如何消除eval: 我正在使用java进行正则表达式。
2回复

Javascript:模式HREF需要替换

假设在我的HTML页面上,我有许多指向链接的href 。 使用Javascript,我需要遍历所有href并将其替换为某种东西,而href没有任何ID。 请帮忙。
1回复

javascript:按模式查找并替换

我有一个字符串,看起来像: '[bla] asf bla qwr bla' ,其中bla未知。 我需要找到所有bla (或其他)事件。 我可以使用js在几个命令中做到这一点: 可以在一个正则表达式中做吗? bla未知,我只知道方括号。 括号中可以包含任何内容。
2回复

根据Javascript中的模式替换单词

我正在将SVG转换为PNG,并且需要删除SVG中的angularjs属性。 我需要输出 我正在尝试使用javascript中的字符串替换方法进行替换。我已经在控制台中尝试了以下操作,但无法正常工作
1回复

用参数替换Javascript

所以我正在做一个markdown编辑器,我想要一些函数,例如"This is *italics*".replace("*$1*","<i>$1</i>"); 有任何简单的方法吗? (客户端,它将托管在Github Pages上,所以随机的npm包可能无济于事)
1回复

如何使用javascript替换为可变模式

我有一个算术表达式,可以在美国数字字中包含一个数字(例如1000100可以写成一百万一千。我需要在表达式中识别出这种模式,并将其转换为相应的数字等效形式。 我正在使用下面的代码。 word2number是一个函数,它将直到(10 ^ 68)之前的任何数字的单词表示形式转换为其相应的
2回复

使用\\ d模式在javascript中替换()函数

我正在尝试在JAVASCRIPT中编写简单的函数,它可以使用我的chrome web浏览器上安装的Tampermonkey自定义我的html代码。 我的输入html是一个地址: 该地址保存在名为“address”的变量中。 我用了一些代码来定制它: 现在我的html输出如下所
3回复

javascript查找并替换字符串中的动态模式

我有一个动态模式,我一直在使用下面的代码来查找 我需要模式有一个新的要求,即包括一个额外的结尾5个字符y或n。 然后删除它或将其替换为''(什么都没有)。 我为模式尝试了这种语法,但是显然它不起作用。 任何提示,不胜感激 TIA。
1回复

用正则表达式模式问题替换Javascript

请考虑下面的以下javascript和html。 第一次运行addAnotherAddress()时,我希望<div class="previous_address1">内部的所有1都将替换为2 ,然后将html附加到<div id="previous_addresses"