Jan*_*ijk 2 javascript replace angularjs
我有一个(AngularJS)项目,我将替换文本中的一些标签.举例:
{tag1} => one
{tag2} => two
{tag3} => three
Run Code Online (Sandbox Code Playgroud)
使用JavaScript替换功能可以替换一个值:
text.replace('{tag1}', 'one');
Run Code Online (Sandbox Code Playgroud)
但我有25个标签的列表.我想用标签和替换物制作一个对象.举例:
var tags = {"{tag1}":"one", "{tag2}":"two", "{tag3}":"three"};
text.replace(tags);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您可以使用RegEx.
str.replace(/{[^{}]+}/g, m => tags[m] || m);
Run Code Online (Sandbox Code Playgroud)
该函数m => tags[m] || m使用ES6 箭头函数语法.ES5中的等效代码:
function(m) {
return tags[m] || m;
}
Run Code Online (Sandbox Code Playgroud)
如果在对象中找到匹配的字符串(标记),则返回该标记的值.如果不是,则返回匹配的字符串本身.
RegEx说明:
{:匹配{文字[^{}]+:匹配除{和之外的一个或多个字符}}:匹配}文字g:全球旗帜var str = 'Hello {tag1}, I\'m {tag2}. Where is {tag3}. - {tag1} {NoTag}';
var tags = {
"{tag1}": "one",
"{tag2}": "two",
"{tag3}": "three"
};
str = str.replace(/{[^{}]+}/g, m => tags[m] || m);
console.log(str);
document.body.innerHTML = str;Run Code Online (Sandbox Code Playgroud)
我还建议使用ES6 模板文字.
var tag1 = 'one',
tag2 = 'two',
tag3 = 'three';
var str = `Hello ${tag1}, I\'m ${tag2}. Where is ${tag3}.`;
Run Code Online (Sandbox Code Playgroud)
var tag1 = 'one',
tag2 = 'two',
tag3 = 'three';
var str = `Hello ${tag1}, I\'m ${tag2}. Where is ${tag3}.`;
document.body.innerHTML = str;Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |