【问题标题】:jQuery return first 5 words of a string without commasjQuery返回不带逗号的字符串的前5个单词
【发布时间】:2012-10-20 05:48:54
【问题描述】:

我正在尝试以可读格式返回字符串的前 5 个单词,没有“”或逗号分隔单词。我不确定它是正则表达式还是什么,但我无法弄清楚,尽管它可能很简单。谢谢!

看看我到目前为止有什么: http://jsfiddle.net/ccnokes/GktTd/

这是我正在使用的功能:

function getWords(string){
    var words = string.split(/\s+/).slice(1,5);
    return words;
}

【问题讨论】:

    标签: javascript jquery arrays string


    【解决方案1】:

    您唯一缺少的是join()

    试试这个:

    function getWords(str) {
        return str.split(/\s+/).slice(0,5).join(" ");
    }
    

    这将执行以下操作:

    var str = "This is a long string with more than 5 words.";
    console.log(getWords(str)); // << outputs "This is a long string"
    

    查看this link 以进一步了解.join()。 javascript中的函数。本质上——如果你不提供参数,它使用默认分隔符,,而如果你提供一个(就像我在上面的例子中所做的那样,通过提供" "——它将使用它。这是为什么输出变成前 5 个单词,每个单词之间用空格隔开。

    【讨论】:

    • 我必须使用 .slice(0,5) 否则它会砍掉第一个单词。
    【解决方案2】:

    这些逗号来自您输出数据的方式:

    //write to DOM
    $('<h2 />').text(getWords(str).join(' ')).appendTo('body');
    

    ​ 当您将字符串添加到getWords(str) 时,javascript 会尝试将数组转换为字符串 - 它通过用逗号连接单词来完成此操作。如果你想和他们一起做其他事情,请使用join

    【讨论】:

      【解决方案3】:

      Troy Alford 解决方案有效,但有一个缺点。如果单词之间有多个空格,或者换行符 (\n) 将被转换为单个空格,例如:

      'jQuery 是一个
      多浏览器'

      将转换为

      'jQuery 是一个多浏览器'

      为了解决这个问题,我们可以使用单词边界正则表达式。它可能看起来像这样:

      function getFirstWords(text, wordsAmount) {
        const arr = text.split(/\b/g);
        const arrItemsAmount = (/\b/.exec(text) && /\b/.exec(text).index) ?
                                 wordsAmount * 2 :
                                 wordsAmount * 2 - 1;
        return arr.slice(0, arrItemsAmount).join('');
      }
      

      【讨论】:

        【解决方案4】:

        你可以用 str.substring(1,15) 来做

        【讨论】:

        • 恐怕这并不能真正回答问题
        猜你喜欢
        • 2022-06-22
        • 2018-02-17
        • 2023-02-02
        • 2016-02-14
        • 1970-01-01
        • 2014-05-28
        • 1970-01-01
        • 1970-01-01
        • 2020-02-28
        相关资源
        最近更新 更多