1

この場合、文字列は次のとおりです。

one two three four five six seven eight nine ten

この文字列の n 番目の単語をどのように選択しますか?

この場合の単語は、空白で先行、後続、または囲まれた 1 つ以上の文字のグループです。

4

9 に答える 9

5

正規表現を使用しないことを示唆する回答にもかかわらず、正規表現の解決策は次のとおりです。

var nthWord = function(str, n) {
    var m = str.match(new RegExp('^(?:\\w+\\W+){' + --n + '}(\\w+)'));

    return m && m[1];
};

必要に応じて式を調整する必要がある場合があります。ここにいくつかのテストケースがあります https://tinker.io/31fe7/1

于 2012-07-23T20:39:40.550 に答える
4

私はこれに使用splitします-

var str = "one two three four five six seven eight nine ten";

nth = str.split(/\s+/)[n - 1];
于 2012-07-23T20:14:36.380 に答える
2
    関数 getWord(str,pos)
    {
        var get=str.match(/\S+\S/g);
        get[pos-1] を返します。
    }




    //ここに例があります
    var str="1 2 3 4 5 6 7 8 9 10 ";
    var get_5th_word=getWord(str,5);
    アラート (get_5th_word);

それは簡単です :)

于 2012-07-23T20:54:25.233 に答える
1

これは正規表現のみのソリューションですが、他の回答の方がパフォーマンスが優れていると思います。

/^(?:.+?[\s.,;]+){7}([^\s.,;]+)/.exec('one two three four five six seven eight nine ten')

単語の区切りとして、空白、ピリオド、コンマ、およびセミコロン (の連続) を使用します。あなたはそれを適応させたいかもしれません。7手段Nth word - 1。_

より「動的」にするには:

var str = 'one two three four five six seven eight nine ten';
var nth = 8;
str.match('^(?:.+?[\\s.,;]+){' + (nth-1) + '}([^\\s.,;]+)'); // the backslashes escaped

ライブデモ: http://jsfiddle.net/WCwFQ/2/

于 2012-07-24T01:44:14.003 に答える
1

スペースを分割して、X 番目の要素を取得できます。

var x = 'one two three four five six seven eight nine ten';
var words = x.split(' ');
console.log(words[5]); // 'six'
于 2012-07-23T20:14:30.117 に答える
0

文字列をスペースで分割し、配列としてアクセスできます。

var sentence = 'one two three four five six seven eight nine ten';
var exploded = sentence.split(' ');

// the array starts at 0, so use "- 1" of the word
var word = 3;
alert(exploded[word - 1]);
于 2012-07-23T20:14:38.900 に答える
0

物事を数えることは、実際には正規表現を使用する必要があるものではありません。代わりに、区切り文字 (特定のケースではスペース) に基づいて文字列を分割し、配列の n-1 番目のインデックスにアクセスしてみてください。

Javascript コード :

 >"one two three four".split(" ");
 ["one", "two", "three", "four"]
 >"one two three four".split(" ")[2];
 >"three"
于 2012-07-23T20:19:33.830 に答える
0
var words = "one two three four five six seven eight nine ten".split(" ");
var nthWord = words[n];

もちろん、最初に n 番目の単語が存在することを確認する必要があります。

于 2012-07-23T20:15:56.590 に答える
0
var nthWord = function(str, n) {
    return str.split(" ")[n - 1]; // really should have some error checking!
}

nthWord("one two three four five six seven eight nine ten", 4) // ==> "four"
于 2012-07-23T20:16:05.110 に答える