0

我正在尝试编写一个从字符串中删除特定单词的函数。

下面的代码在句子的最后一个单词之前都可以正常工作,因为它后面没有我的正则表达式查找的空格。

如何捕获后面没有空格的最后一个单词?

JS小提琴

function stopwords(input) {

var stop_words = new Array('a', 'about', 'above', 'across');

console.log('IN: ' + input);

stop_words.forEach(function(item) {
    var reg = new RegExp(item +'\\s','gi')

    input = input.replace(reg, "");
});

console.log('OUT: ' + input);
}

stopwords( "this is a test string mentioning the word across and a about");
4

2 回答 2

2

您可以使用单词边界标记

var reg = new RegExp(item +'\\b','gi')
于 2013-03-16T17:28:17.887 回答
1

假设我在sea传话

stopwords( "this is a test string sea mentioning the word across and a about");

这将减少sease

function stopwords(input) {

  var stop_words = ['a', 'about', 'above', 'across'];

  console.log('IN: ' + input);

  // JavaScript 1.6 array filter
  var filtered  = input.split( /\b/ ).filter( function( v ){
        return stop_words.indexOf( v ) == -1;
  });

  console.log( 'OUT 1 : ' + filtered.join(''));

  stop_words.forEach(function(item) {
      // your old : var reg = new RegExp(item +'\\s','gi');
      var reg = new RegExp(item +'\\b','gi'); // dystroy comment

      input = input.replace(reg, "");
  });

  console.log('OUT 2 : ' + input);
}

stopwords( "this is a test string sea mentioning the word across and a about");

有输出

IN: this is a test string sea mentioning the word across and a about

OUT 1 : this is  test string sea mentioning the word  and  

OUT 2 : this is  test string se mentioning the word  and  
于 2013-03-16T17:57:12.890 回答