I have a string with say: My Name is %NAME% and my age is %AGE%.

%XXX%是占位符.我们需要替换一个对象的值.

物体看起来像:{"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}

I need to parse the object and replace the string with corresponding values. So that final output will be:

我叫迈克,今年26岁.

The whole thing has to be done either using pure javascript or jquery.

推荐答案

The requirements of the original question clearly couldn't benefit from string interpolation, as it seems like it's a runtime processing of arbitrary replacement keys.

However,如果你只需要做字符串插值,你可以使用:

const str = `My name is ${replacements.name} and my age is ${replacements.age}.`

Note the backticks delimiting the string, they are required.


For an answer suiting the particular OP's requirement, you could use String.prototype.replace() for the replacements.

The following code will handle all matches and not touch ones without a replacement (so long as your replacement values are all strings, if not, see below).

var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
    str = 'My Name is %NAME% and my age is %AGE%.';

str = str.replace(/%\w+%/g, function(all) {
   return replacements[all] || all;
});

jsFiddle.

如果某些替换项不是字符串,请确保它们首先存在于对象中.如果您有类似示例的格式,即用百分号括起来,则可以使用in运算符来实现这一点.

jsFiddle.

但是,如果您的格式没有特殊的格式,即任何字符串,并且您的replacements对象没有null原型,请使用Object.prototype.hasOwnProperty(),除非您可以保证任何可能替换的子字符串都不会与原型上的属性名称冲突.

jsFiddle.

Otherwise, if your replacement string was 'hasOwnProperty', you would get a resultant messed up string.

jsFiddle


As a side note, you should be called replacements an Object, not an Array.

Jquery相关问答推荐

用于活动选项卡更改的 Bootstrap 3 jquery 事件

删除索引后的所有项目

在 textarea 输入中美化 json 数据

Twitter Bootstrap css 类的 jQuery show() 隐藏

如何更改 dropzone.js 中的默认文本?

如果不是 jQuery,Javascript 中的美元符号是什么

将图像 url 转换为 Base64

表单提交之前的jQuery函数

在 jQuery 中构建 html 元素的最清晰方法

Drop 事件未在 chrome 中触发

Jquery判断元素是否在视口中可见

AngularJS 在哪些方面比 jQuery 做得更好?

清除并刷新 jQuery Chosen 下拉列表

moment.js isValid 函数无法正常工作

Bootstrap:在 Modal 中打开另一个 Modal

测试两个元素是否相同

用作 Google Chrome 书签

jquery beforeunload 关闭(不离开)页面时?

如何使用jQuery在弹出窗口中预览输入类型=“文件”中的选定图像?

jQuery ajax() 使用成功、错误和完成与 .done()、.fail() 和 always()