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 回答
35

有史以来最好的一个,我最喜欢使用splitslice

const str = "hello, how are you today?"
const last = str.split(' ').slice(-1)[0]
console.log({last})

另一个正在使用split最后pop一个。

const str = "hello, how are you today?"
const last = str.split(' ').pop()
console.log({last})

于 2018-12-11T20:08:17.350 回答
32

您还可以考虑反转您的数组并获取第一个元素。这样您就不必知道长度,但它并没有带来真正的好处和缺点,即使用大数组进行反向操作可能需要更长的时间:

array1.split(",").reverse()[0]

虽然这很容易,但也修改了有问题的原始数组。这可能是也可能不是问题。

参考:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

不过,您可能想使用它:

array1.split(",").pop()
于 2018-12-18T21:13:41.743 回答
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)/

替换只是说用最后一个分隔符之后的东西替换整个字符串。

因此,您可以看到如何普遍应用它。注意原始字符串没有被修改。

于 2012-02-01T22:06:16.130 回答
2

有多种方法可以获取最后一个元素

let input='one,two,three,four';

let output1 = input.split(',').pop();
console.log('output1 =',output1);

let split = input.split(',');
let output2 = split[split.length-1];
console.log('output2=',output2);

let output3 = input.split(',').reverse()[0];
console.log('output3=',output3);

let output4 = input.split(',').slice(-1)[0];
console.log('output4=',output4);

于 2021-11-24T08:20:37.497 回答
1

这种方式很容易理解,而且很短。

const output = input.split(',').pop().split(' ').pop();
于 2021-11-24T11:54:20.743 回答
0
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 >>";
于 2017-01-16T10:59:48.843 回答
0

您可以直接访问数组索引:

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

于 2017-07-19T18:34:24.173 回答