jQuery返回一个没有逗号的字符串的前5个单词

时间:2012-10-30 19:50:28

标签: javascript jquery arrays string

我正在尝试以可读格式返回字符串的前5个单词,没有“”或逗号分隔单词。我不确定它是一个正则表达式的东西还是什么,但我想不出来虽然它可能很简单。谢谢!

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

这是我正在使用的功能:

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

4 个答案:

答案 0 :(得分:33)

您唯一缺少的是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个单词的原因,每个单词之间用空格分隔。

答案 1 :(得分:0)

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

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

当您向getWords(str)添加字符串时,javascript会尝试将数组转换为字符串 - 它通过使用逗号连接单词来完成此操作。如果您想使用其他内容加入,请使用join

答案 2 :(得分:0)

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('');
}

答案 3 :(得分:-1)

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