从字符串javascript获取前x个单词的最佳方法是什么?

时间:2015-03-18 16:01:24

标签: javascript

不使用jquery,最简单的方法是什么?如果我有一个包含600个单词的字符串,并且我只想要前100个左右的单词然后跟踪:...最简单的方法是什么?

我找到了:replace(/(([^\s]+\s\s*){40})(.*)/,"$1…");但是我没有'了解正则表达式足以知道这是否正确。

2 个答案:

答案 0 :(得分:3)

@ dfsq的解决方案是一个很好的直接解决方案,但为了学习:)

为了尝试和理解正则表达式,我建议查看 Debuggex 为您提供的类似流程图的可视化,并尝试在 Regex101上进行替换即可。 (链接包含您的问题中未加改变的正则表达式)

我会做一些小修改:

  1. .与新行不匹配,一种方法是匹配[\s\S],绝对匹配每个字符
  2. 这个:[^\s]+\s\s*可以解开并优化为\S+\s+,但我会将其转为\s*\S+,以便...位于最后一个单词之后介于两者之间的空间。
  3. 哪会导致这个:

    ((\s*\S+){40})([\s\S]*)
    

    Regular expression visualization

    Regex101 substitution in action

答案 1 :(得分:0)

我猜这很简单(我不知道这是不是最好的方式)!

for(var i=1;i <= numberOfWords;i++) {
    var word = mystr.substr(0,mystr.indexOf(' ')+1).trim();
    arrayOfWords.push(word);
    mystr = mystr.substr(mystr.indexOf(' '),mystr.length-1).trim();
}

亲自尝试:http://jsfiddle.net/fourat05/w386mxaa/