Javascript:返回字符串中的最后一个单词

时间:2014-01-02 12:50:26

标签: javascript string substring

权利:

我有一个words字符串,里面有两个单词,我需要返回最后一个单词。他们被“”分开。我该怎么做?

function test(words) {

var n = words.indexOf(" ");
var res = words.substring(n+1,-1);
return res;

}

我被告知要使用indexOfsubstring,但这不是必需的。任何人有一个简单的方法来做到这一点? (有或没有indexOfsubstring

10 个答案:

答案 0 :(得分:43)

试试这个:

你可以使用n字长的单词。

示例:

  words = "Hello World";
  words = "One Hello World";
  words = "Two Hello World";
  words = "Three Hello World";

所有人都会返回相同的值:“世界”

function test(words) {
    var n = words.split(" ");
    return n[n.length - 1];

}

答案 1 :(得分:26)

var data = "Welcome to Stack Overflow";
console.log(data.split(" ").splice(-1));

<强>输出

[ 'Overflow' ]

即使原始字符串中没有空格也可以,所以你可以直接获得这样的元素

var data = "WelcometoStackOverflow";
console.log(data.split(" ").splice(-1)[0]);

<强>输出

WelcometoStackOverflow

答案 2 :(得分:20)

你也可以:

words.split(" ").pop();

只需链接分割函数的结果(数组)并弹出最后一个元素就可以只用一行了:)

答案 3 :(得分:4)

你想要最后一个单词,这表明lastIndexOf可能比indexOf更有效。此外,slice也是 Strings 可用的方法。

var str = 'foo bar fizz buzz';
str.slice(
    str.lastIndexOf(' ') + 1
); // "buzz"

请参阅2011年this jsperf,显示 拆分 vs indexOf +切片 vs indexOf + substring 显示lastIndexOf的{​​{3}}与indexOf的效率大致相同,主要取决于匹配发生的时间。

答案 4 :(得分:1)

从接受的答案中添加,如果输入字符串是"Hello World "(注意末尾的额外空格),它将返回''。以下代码应该预测用户使用胖子" "

var lastWord= function(str) {
  if (str.trim() === ""){
    return 0;
  } else {   
    var splitStr = str.split(' ');
    splitStr = splitStr.filter(lengthFilter);
    return splitStr[splitStr.length - 1];
  }
};

var lengthFilter = function(str){
    return str.length >= 1;
};

答案 5 :(得分:0)

要完成Jyoti Prakash,您可以添加多个分隔符(\s | ,)来分割字符串(通过this post

示例:

function lastWord(words) {
  var n = words.split(/[\s,]+/) ;
  return n[n.length - 1];
}

注意:正则表达式\s表示whitespace characters:空格字符,制表符,回车符,换行符,垂直制表符,换页符

var wordsA = "Hello  Worlda"; // tab
var wordsB = "One Hello\nWorldb";
var wordsC = "Two,Hello,Worldc";
var wordsD = "Three Hello Worldd";

function lastWord(words) {
  var n = words.split(/[\s,]+/);
  return n[n.length - 1];
}


$('#A').html( lastWord(wordsA) );
$('#B').html( lastWord(wordsB) );
$('#C').html( lastWord(wordsC) );
$('#D').html( lastWord(wordsD) );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
A:<span id="A"></span><br/>
B:<span id="B"></span><br/>
C:<span id="C"></span><br/>
D:<span id="D"></span><br/>

答案 6 :(得分:0)

/**
 * Get last word from a text
 * @param {!string} text
 * @return {!string}
 */
function getLastWord(text) {
  return text
    .split(new RegExp("[" + RegExp.quote(wordDelimiters + sentenceDelimiters) + "]+"))
    .filter(x => !!x)
    .slice(-1)
    .join(" ");
}

答案 7 :(得分:0)

最简单的方法是使用切片方法:-

例如:-

let words = "hello world";
let res = words.slice(6,13);
console.log(res);

答案 8 :(得分:-1)

使用split()

function lastword(words){
 array = words.split(' ');

 return array[1]
}

答案 9 :(得分:-1)

非常直截了当。 你有两个单词用空格分隔。 让我们使用split()方法将字符串分解为数组。 现在你的数组有两个索引为0和1的元素。 使用索引1警告元素。

var str="abc def";
var arr=str.split(" ");
alert(arr[1]);