Расщепление строки массивом слов в Javascript - PullRequest
1 голос
/ 12 ноября 2010

Я беру некоторый текст и хочу разбить его на массив. Моя цель состоит в том, чтобы иметь возможность разбить его на фразы, ограниченные стоп-словами (слова, игнорируемые поисковыми системами, такие как «а», «и т. Д.»), Чтобы я мог затем искать каждую отдельную фразу в своем API. Так, например: 'The cow's hat was really funny' приведет к arr[0] = cow's hat и arr[1] = funny. У меня уже есть массив стоп-слов, но я не могу придумать, как на самом деле разделить каждое / любое из слов в нем, не написав очень медленной функции для циклического прохождения каждого из них.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Используйте split(). Требуется регулярное выражение. Ниже приведен простой пример:

search_string.split(/\b(?:a|the|was|\s)+\b/i);

Если у вас уже есть массив стоп-слов, вы можете использовать join() для построения регулярного выражения. Попробуйте следующее:

regex = new RegExp("\\b(?:" + stop_words.join('|') + "|\\s)+\\b", "i");

Рабочий пример http://jsfiddle.net/NEnR8/. ПРИМЕЧАНИЕ: может быть лучше заменить эти значения, чем разделять их, поскольку в этом результате есть пустых элементов массива из этого результата. 1015 *

2 голосов
/ 12 ноября 2010

Это делает без учета регистра .split() для ваших ключевых слов в окружении границ слов.

  var str = "The cow's hat was really funny";

  var arr = str.split(/\ba\b|\bthe\b|\bwas\b/i);

Вы можете получить несколько пустых элементов в массиве. Чтобы сжать его, вы можете сделать это:

  var len = arr.length;

  while( len-- ) {
    if( !arr[len] )
        arr.splice( len, 1);
  }
1 голос
/ 12 ноября 2010

Быстрым и грязным способом было бы заменить строки "стоп-слова" некоторыми уникальными символами (например, &&&), а затем разделить на основе этого уникального символа.

Например.

var the_text = "..............",
    stop_words = ['foo', 'bar', 'etc'],
    unique_str = '&&&';

for (var i = 0; i < stop_words.length; i += 1) {
  the_text.replace(stop_words[i], unique_str);
}

the_text.split(unique_str);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...