首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换Curley Braces JavaScript中的文本

替换Curley Braces JavaScript中的文本
EN

Stack Overflow用户
提问于 2011-03-17 02:53:43
回答 5查看 25.2K关注 0票数 20

我试图使用JavaScript动态替换大括号中的内容。下面是我的代码示例:

代码语言:javascript
复制
var myString = "This is {name}'s {adjective} {type} in JavaScript! Yes, a {type}!";
var replaceArray = ['name', 'adjective', 'type'];
var replaceWith = ['John', 'simple', 'string'];

for(var i = 0; i <= replaceArray.length - 1; i ++) {
  myString.replace(/\{replaceArray[i]\}/gi, replaceWith[i]);
}

alert(myString);

上面的代码,应该,输出“这是JavaScript中John的简单字符串!是的,一个字符串!”

下面是发生的情况:

  1. 我们将得到一个字符串,其中包含需要替换的大括号中的值。
  2. 循环使用"replaceArray“查找大括号中需要替换的所有值。
  3. 这些值以及大括号将被替换为"replaceWith“数组中的相应值。

但是,我没有任何运气,特别是因为一个值可能在多个位置中被替换,而且我正在处理正则表达式中的一个动态值。

谁能帮我解决这个问题,使用类似的设置,如上面?

EN

Stack Overflow用户

回答已采纳

发布于 2011-03-17 03:00:51

首先,String.replace不是破坏性的-它不会改变字符串本身,所以您必须设置myString = myString.replace(...)。其次,您可以使用RegExp动态创建new RegExp对象,因此所有这些结果将是:

代码语言:javascript
复制
var myString = "This is {name}'s {adjective} {type} in JavaScript! Yes, a {type}!",
    replaceArray = ['name', 'adjective', 'type'],
    replaceWith = ['John', 'simple', 'string'];

for(var i = 0; i < replaceArray.length; i++) {
    myString = myString.replace(new RegExp('{' + replaceArray[i] + '}', 'gi'), replaceWith[i]);
}
票数 19
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5334380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档