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

例如:

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

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

1回复

用参数替换Javascript

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

替换javascript中的参数

我尝试了很多使用 Javascript 替换查询参数。 但它不起作用。 你能分享任何替换参数的解决方案吗下面是例子 我得到的输出是www.test.com ? . 有什么办法可以更换吗? 并且只获得www.test.com 。
1回复

RegExpreplace不替换为pattern

我想用##-##(#:=任何数字符号)代替####。 在控制台中,我得到####(不是##-##)。 我做错了什么?
2回复

根据参数通过Javascript替换表格主体

我有几个产品我想创建一个 HTML / JS形式。 (我目前让他们都以自己的个人形式运行良好,但是我宁愿使用“主”形式。) 表单需要显示一张表格,其中包含不同的行,具体取决于产品。 我已经看到了JavaScript,它可以通过创建一个表对象并以数组形式加载项目来动态创建表,但是我认为这
1回复

在JavaScript中定义Module(pattern)的多个实例

我试图找到如何创建多个实例并根据Module模式配置我的模块的最佳方法。 目前我有 关于这种模式,我有几个问题。 为模块提供配置的最佳方法是什么,我只是为私有设置字段创建了setter,但我觉得这不是最好的实现方式。 请建议正确的方法。 如何创建我的模块的多个实例。 据我
2回复

javascript等效于pythonregexyes-patternno-pattern

在 python 中有一个语法 - 如果存在捕获组,则 x else y 例如>>> pat = re.compile('(?:(a)|(c))b(?(1)a|c)') # should only match 'aba' or 'cbc'>>> pat.match
1回复

Javascript新的RegExpvs./pattern/和多行

为什么是/ pattern /匹配,但RegExp不是?
2回复

参数作为Javascript中的实际代码替换

我想将参数传递给用作实际代码的函数 我试图传递一个whom参数,该参数用于迭代对象的whom属性。 我知道可以将字符串作为参数传递,但是实际的代码段呢? 有可能这样做吗?