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

从字符串javascript中获取前x个单词的最佳方法是什么,javascript,Javascript,如果不使用jquery,最简单的方法是什么?如果我有一个包含600个单词的字符串,我只想要前100个左右的单词,然后用:…什么是最简单的方法 我发现:replace(/([^\s]+\s\s*){40})(.*)/,“$1…”)

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


我发现:
replace(/([^\s]+\s\s*){40})(.*)/,“$1…”) 我想这很简单(我不知道这是不是最好的办法)


for(var i=1;i@dfsq的解决方案是一个很好的直截了当的解决方案,但出于学习的兴趣:)

为了尝试理解正则表达式,我建议您查看提供的类似流程图的可视化,并在上尝试替换。(链接包含与您的问题相同的正则表达式)

我会做一些小的修改:

  • 与新行不匹配,一种方法是将
    [\s\s]
    替换为匹配,这绝对匹配每个字符
  • 这:
    [^\s]+\s\s*
    可以被解开并优化为
    \s+
    ,但是我会把它转过来,使它成为
    \s*\s+
    ,这样
    ..
    在最后一个单词后面,中间没有空格
  • 这将导致:

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


    你测试过那段代码吗?
    str.split(/\s++/).slice(01100)。join(“)+”…”
    @dfsq,那是在空格上切片,用单词边界数词不是更好吗?@Mouser严格来说,这会给连字符带来麻烦。我不认为40的精确性是最重要的,但我认为最好不要在一个连字符的单词中间中断,这是你使用单词边界时遇到的。
    ^(?:\b\w+\b[\s\r\n]*){1100}$
    (信用证:)
    ((\s*\S+){40})([\s\S]*)