web-dev-qa-db-ja.com

Javascript:文字列の最後の単語を返す

それの権利:

2つの単語を含むwords文字列があり、最後の単語を返す必要があります。これらは「」で区切られています。どうすればいいですか?

function test(words) {

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

}

indexOfsubstringを使用するように言われましたが、必須ではありません。誰でも簡単にこれを行う方法がありますか? (indexOfおよびsubstringの有無にかかわらず)

27
Andrew P

これを試して:

n語長の単語を使用できます。

例:

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

すべてが同じ値を返します: "World"

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

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

出力

[ 'Overflow' ]

元の文字列にスペースがなくても機能するため、このような要素をすぐに取得できます

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

出力

WelcometoStackOverflow
28
thefourtheye

次のこともできます。

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

Split関数の結果(配列)をチェーンし、最後の要素をポップするだけで、たった1行でトリックを実行できます:)

24
user5505115

last Wordが必要です。これは、 lastIndexOfindexOfよりも効率的であることを示唆しています。さらに、 sliceStringsで利用可能なメソッドでもあります。

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

this jsperf 2011年からsplitvsindexOf + slicevsindexOf + substringおよび this perf は、lastIndexOfindexOf、主にマッチが発生するまでの時間に依存します。

6
Paul S.

入力文字列が"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;
};
1
Iggy

Jyoti Prakashを完成させるには、複数のセパレーター(\s | ,)文字列を分割する( this post

例:

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

注:正規表現\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/>
0
boly38
/**
 * 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(" ");
}
0
Zuhair Taha

最も簡単な方法は、スライス法を使用することです-

例えば:-

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