0
我正在编写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),如果它有多个元素,创建一个时间变量,并检查连续的元素,但我想它会影响性能,我不知道是否有更好更容易的选择。
任何人都可以想到更好的选择吗?
谢谢!
正常工作。几分钟前,我尝试了一些类似的东西,因为我在StackOverflow中看到了一些建议,但没有用\\ b转义。谢谢 !! ;-) – Anto
它的工作原理,但效率不高。设想一下n个模式的大字典也是一样的:你需要将整个字符串解析n次,并且可能搜索文本中没有的单词! –