244

複数の区切り記号を持つ分割配列の最後の要素を取得する必要があります。区切り文字はコンマとスペースです。セパレーターがない場合は、元の文字列を返す必要があります。

文字列が「今日はどうですか?」の場合 「今日?」を返す必要があります。

入力が「hello」の場合、出力は「hello」になります。

JavaScriptでこれを行うにはどうすればよいですか?

4

10 に答える 10

960

すべてにワンライナーがあります。:)

var output = input.split(/[, ]+/).pop();
于 2009-03-16T18:40:31.720 に答える
151

const str = "hello,how,are,you,today?"
const pieces = str.split(/[\s,]+/)
const last = pieces[pieces.length - 1]

console.log({last})

この時点で、piecesは配列であり、配列pieces.lengthのサイズが含まれているため、配列の最後の要素を取得するには、 をチェックしpieces[pieces.length-1]ます。コンマやスペースがない場合は、指定されたとおりに文字列が出力されます。

alert(pieces[pieces.length-1]); // alerts "today?"
于 2009-03-16T18:23:25.613 に答える
96
var item = "one,two,three";
var lastItem = item.split(",").pop();
console.log(lastItem); // three
于 2012-06-12T18:20:31.627 に答える
3

そして、配列を構築したくない場合は...

var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");

英語の内訳は次のとおりです。

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/

replaceは、文字列全体を最後の区切り文字の後のものに置き換えることを意味します。

したがって、これを一般的にどのように適用できるかがわかります。元の文字列は変更されないことに注意してください。

于 2012-02-01T22:06:16.130 に答える
0

配列インデックスに直接アクセスできます。

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three

于 2017-07-19T18:34:24.173 に答える