【发布时间】:2017-05-31 12:00:12
【问题描述】:
我正在编写 Web 应用程序的一部分,我在其中替换文本中的单词。我使用了替换功能,但我替换了我不想要的文本(下面放一个例子)。现在我已经实现了一个功能,通过将文本拆分为单词,但是当我想替换文本中的两个连续单词时。显然,它不起作用。
第一个选项:
var str = "iRobot Roomba balbalblablbalbla";
str.replace(/robot/gi, 'Robota');
output -> iRobota Roomba ........(fail !)
第二个代码:
var patterns: [
{
match: 'robot',
replacement: 'Robota'
},{
match: 'ipad',
replacement: 'tablet'
},
......... more
];
var temp = str.split(' ');
var newStr = temp.map(function(el) {
patterns.forEach(function(item) {
if( el.search( new RegExp( '^'+item.match+'$', 'gi') ) > -1 ) {
el = item.replacement;
return el;
}
});
return el;
});
return newStr.join(' ');
最后一个代码不会替换两个单词的文本,因为检查只会生成一个。我一直在互联网上寻找一些解决方案,但我没有找到类似的东西。
我只是碰巧对单词进行了拆分检查(item.match),如果它有多个元素,则创建一个时间变量并检查连续元素,但我猜它会影响性能,我不知道如果有更好更简单的选择。
谁能想到更好的选择?
谢谢!
【问题讨论】:
标签: javascript regex performance