在Javascript中按字符数组拆分字符串

时间:2010-11-12 20:09:23

标签: javascript string

我正在拍摄一些文字并希望将其拆分为数组。我的目标是能够将它分成由停用词界定的短语(搜索引擎忽略的单词,比如'a'''等),这样我就可以在我的API中搜索每个单独的短语。例如:'The cow's hat was really funny'会产生arr[0] = cow's hatarr[1] = funny。我已经有了一系列的停用词,但是我无法真正想到如何通过它中的每个/任何单词实际拆分,而不需要编写一个非常慢的函数来遍历每个单词。

3 个答案:

答案 0 :(得分:2)

使用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/注意:最好替换这些值,而不是拆分它们,因为此结果中有数组元素。

答案 1 :(得分:2)

这会对您的关键字设置不区分大小写的.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);
  }

答案 2 :(得分:1)

快速而肮脏的方法是用一些独特的字符(例如&&&)替换“停用词”字符串,然后根据该唯一字符进行拆分。

例如。

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);