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]);