15

文字列の最初の 5 単語を読み取り可能な形式で返そうとしています。"" または単語を区切るコンマはありません。それが正規表現なのかどうかはわかりませんが、おそらく単純ですが、わかりません。ありがとう!

私がこれまでに持っているものを参照してください: http://jsfiddle.net/ccnokes/GktTd/

これは私が使用している機能です:

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

4 に答える 4

35

あなたが欠けている唯一のものは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"

の詳細については、このリンクを参照してください.join()。JavaScript で機能します。本質的に-引数を指定しない場合、デフォルトの delimiter を使用しますが、引数を指定した,場合(上記の例で行っているように、指定することにより" "-代わりにそれを使用します。これが、出力が最初になる理由です)スペースで区切られた 5 つの単語。

于 2012-10-30T19:54:37.323 に答える
0

Troy Alford ソリューションは機能していますが、1 つの欠点があります。単語間に複数のスペースがある場合、または改行文字 (\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('');
}
于 2016-12-15T07:58:26.410 に答える
0

これらのコンマは、データの出力方法から来ています。

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

に文字列を追加するとgetWords(str)、javascript は配列を文字列に変換しようとします。これは、単語をコンマで結合することによって行われます。他のものと結合したい場合は、 を使用しますjoin

于 2012-10-30T19:54:49.720 に答える