为此,字符串是:
one two three four five six seven eight nine ten
如何选择此字符串中的第n个单词?
在这种情况下,一个单词是一个由一个空格开头,成功或包围的一个或多个字符的组。
答案 0 :(得分:4)
我会使用split
-
var str = "one two three four five six seven eight nine ten";
nth = str.split(/\s+/)[n - 1];
答案 1 :(得分:4)
尽管答案暗示不使用正则表达式,但这是一个正则表达式解决方案:
var nthWord = function(str, n) {
var m = str.match(new RegExp('^(?:\\w+\\W+){' + --n + '}(\\w+)'));
return m && m[1];
};
您可能需要调整表达式以满足您的需求。以下是一些测试用例https://tinker.io/31fe7/1
答案 2 :(得分:1)
你可以拆分空格,然后抓住第X个元素。
var x = 'one two three four five six seven eight nine ten';
var words = x.split(' ');
console.log(words[5]); // 'six'
答案 3 :(得分:1)
function getWord(str,pos) { var get=str.match(/\S+\S/g); return get[pos-1]; } //Here is an example var str="one two three four five six seven eight nine ten "; var get_5th_word=getWord(str,5); alert(get_5th_word);
简单:)
答案 4 :(得分: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
答案 5 :(得分: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]);
答案 6 :(得分:0)
var words = "one two three four five six seven eight nine ten".split(" ");
var nthWord = words[n];
当然,您需要先检查第n个单词是否存在..
答案 7 :(得分: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"
答案 8 :(得分:0)
计算事物并不是你应该使用正则表达式,而是尝试根据你的分隔符(特定情况下的空格)拆分字符串,然后访问数组的第n-1索引。
Javascript代码:
>"one two three four".split(" ");
["one", "two", "three", "four"]
>"one two three four".split(" ")[2];
>"three"