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次,並且可能搜索文本中沒有的單詞! –