Javascript: возвращение последнего слова в строку

прямо к нему:

У меня есть строка words, в которой есть два слова, и мне нужно вернуть последнее слово. Они разделены "". Как это сделать?

function test(words) {

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

}

Мне сказали использовать indexOf и substring, но это не требуется. У кого-нибудь есть простой способ сделать это? (с или без indexOf и substring)

Ответы

Ответ 1

Попробуйте следующее:

вы можете использовать слова с длиной слова 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];

}

Ответ 2

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

Выход

[ 'Overflow' ]

Это работает, даже если в исходной строке нет места, поэтому вы можете сразу получить элемент, подобный этому

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

Выход

WelcometoStackOverflow

Ответ 3

Вы также можете:

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

Простое объединение результата (массива) функции split и выскакивание последнего элемента могло бы сделать трюк только в одной строке:)

Ответ 4

Вам нужно последнее слово, которое предлагает lastIndexOf для вас более эффективно, чем indexOf. Кроме того, slice также является методом, доступным для строк.

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

См. этот jsperf от 2011 года, показывающий split vs indexOf + slice vs indexOf + подстрока и this perf, который показывает lastIndexOf примерно такая же эффективность, как indexOf, в основном это зависит от того, как долго будет происходить совпадение.

Ответ 5

Добавление из принятого ответа, если строка ввода "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;
};

Ответ 6

Чтобы завершить Jyoti Prakash, вы можете добавить несколько разделителей (\s| ,), чтобы разделить вашу строку (через этот пост)

Пример:

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

Примечание: regex \s означает символы пробела: символ пробела, символ табуляции, символ возврата каретки, новый символ строки, Символ вертикальной табуляции, символ подачи формы

сниппет

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/>

Ответ 7

/**
 * 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(" ");
}

Ответ 8

Самый простой способ - использовать метод среза:

Например:-

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

Ответ 9

Используйте split()

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

 return array[1]
}

Ответ 10

Его довольно прямолинейно. У вас есть два слова, разделенных пробелом. Позволяет разбить строку на массив с помощью метода split(). Теперь ваш массив имеет два элемента с индексами 0 и 1. Оповести элемент с индексом 1.

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