1

为此,字符串是:

one two three four five six seven eight nine ten

你如何选择这个字符串中的第 n 个单词?

在这种情况下,单词是一组一个或多个字符,可以在前面、后面或被空格包围。

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);
        返回获取[pos-1];
    }




    //这里是一个例子
    var str="一二三四五六七八九十";
    var get_5th_word=getWord(str,5);
    警报(get_5th_word);

这很简单 :)

于 2012-07-23T20:54:25.233 回答
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 回答
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 回答
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
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 回答
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 回答