Как извлечь слова из строки, совпадающей с содержащимися в массиве запрещенных слов (и удалить все оставшиеся пробелы)? - PullRequest
0 голосов
/ 18 декабря 2010

Как бы вы извлекли определенные слова из строки, учитывая массив запрещенных слов.

Рассмотрим в качестве примера следующую цитату Вуди Аллена:

Love is the answer, 
but while you are waiting for the answer 
sex raises some pretty good questions

А это массив слов для извлечения из строки:

var forbidden = new Array("is", "the", "but", "you", 
"are", "for", "the", "some", "pretty");

Как бы вы извлекли все слова из строки, удалили все оставшиеся пробелы, чтобы вы получили такой результат:

Love answer, while waiting answer sex raises good questions

Ответы [ 2 ]

4 голосов
/ 18 декабря 2010
 var quote = "Love is the answer, but while you are waiting for the answer sex raises some pretty good questions";
 var forbidden = new Array("is", "the", "but", "you", "are", "for", "the", "some", "pretty");

 var isForbidden = {};
 var i;

 for (i = 0; i < forbidden.length; i++) {
     isForbidden[forbidden[i]] = true;
 }

 var words = quote.split(" ");
 var sanitaryWords = [];

 for (i = 0; i < words.length; i++) {
     if (!isForbidden[words[i]]) {
          sanitaryWords.push(words[i]);
     }
 }

 alert(sanitaryWords.join(" "));
2 голосов
/ 18 декабря 2010
var quote = "Love is the answer,\nbut while you are waiting for the answer\nsex raises some pretty good questions";

var forbidden = ["is", "the", "but", "you", "are", "for", "the", "some", "pretty"];

var reg = RegExp('\\b(' + forbidden.join('|') + ')\\b\\s?', 'g');

alert(quote.replace(reg, ''));

Попробуйте: http://jsbin.com/isero5/edit

...