回答:
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);
この時点で、pieces
は配列であり、配列pieces.length
のサイズが含まれているため、配列の最後の要素を取得するには、を確認しpieces[pieces.length-1]
ます。コンマやスペースがない場合は、指定されたとおりに文字列を出力します。
alert(pieces[pieces.length-1]); // alerts "today?"
var last = str.split(/[\s,]+/).pop()
すべてのためのワンライナーがあります。:)
var output = input.split(/[, ]+/).pop();
split
呼び出しによって作成されるため、それは問題ではありません。とにかく保持されません。元の文字列は、配列からアイテムをポップしても変更されません。
{1,}
。つまり[, ]+
、セット内の1つ以上の文字(カンマとスペース)に一致します。文字列からすべての単語が必要な場合に便利ですが、最後の単語だけが必要な場合は機能的な違いはなく、配列内の文字列が少なくなるためオーバーヘッドが削減されるだけです。
var item = "one,two,three";
var lastItem = item.split(",").pop();
console.log(lastItem); // three
.split(',').pop()
、カンマ区切りの文字列の最後の要素に対して機能します。私はグッファの素晴らしい答えに惑わされました、正規表現を必要とせず、トリックがそこにあると思ったので無視しました!:P
配列を逆にして最初の要素を取ることも検討できます。そうすれば、長さを知る必要はありませんが、大きな配列では逆の操作に時間がかかるという実際のメリットとデメリットはありません。
array1.split(",").reverse()[0]
それは簡単ですが、問題の元の配列も変更します。それは問題かもしれませんし、そうでないかもしれません。
リファレンス:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
おそらくあなたはこれを使いたいかもしれません:
array1.split(",").pop()
.pop()
方法は、これまで見た中で最良の答えです。それが作成された理由です!
そして、配列を構築したくない場合は...
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)/
置換は、文字列全体を最後のセパレータの後のもので置換することを示しています。
これが一般的にどのように適用できるかがわかります。元の文字列は変更されないことに注意してください。
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds';
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>";
配列のインデックスに直接アクセスできます。
var csv = 'zero,one,two,three';
csv.split(',')[0]; //result: zero
csv.split(',')[3]; //result: three
pieces.pop()
して、配列の最後の項目を取得することもできます。