我需要获取由多个分隔符拆分后的数组的最后一个元素。这些分隔符是逗号和空格。如果没有分隔符,它应该返回原始字符串。
如果字符串是“how,are you doing, today?”,那么应该返回“today?”。
如果输入是“hello”,输出应该是“hello”。
如何在JavaScript中实现?
我需要获取由多个分隔符拆分后的数组的最后一个元素。这些分隔符是逗号和空格。如果没有分隔符,它应该返回原始字符串。
如果字符串是“how,are you doing, today?”,那么应该返回“today?”。
如果输入是“hello”,输出应该是“hello”。
如何在JavaScript中实现?
什么事情都有一行代码可以解决。 :)
var output = input.split(/[, ]+/).pop();
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?"
pieces.pop()
来获取你的数组中的最后一个元素。 - Trentvar item = "one,two,three";
var lastItem = item.split(",").pop();
console.log(lastItem); // three
.split(',').pop()
可以用来获取逗号分隔字符串的最后一个元素。我只是想说这个因为我曾被 Guffa 给出的令人惊叹的答案误导了,因为我不需要正则表达式,所以忽略了它,认为这个技巧就在那里! :P - cregox最好的一个,也是我最喜欢的方法,使用 split
和 slice
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})
.pop()
在切片后仍然是一种很好的便利,因为访问方法返回一个新的数组,所以不会发生任何变异。 - 4UmNinja你也可以考虑将数组翻转并取第一个元素。这样你就不需要知道长度,但它并没有带来实质性的好处,而且缺点是在处理大数组时反转操作可能会更慢:
array1.split(",").reverse()[0]
虽然很容易,但它也修改了所讨论的原始数组。这可能是一个问题,也可能不是。
参考:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse
也许您想使用这个:
array1.split(",").pop()
.pop()
方法是目前为止我见过的最好的答案。这就是它被创建的原因! - Nicholas Porterconst output = input.split(',').pop().split(' ').pop();
at()
方法接受一个整数值并返回该索引处的项目,允许使用正数和负数。负数从数组中的最后一个项目开始计算。
const str = "how,are you doing, today?";
const last = str.split(/[\s,]+/).at(-1);
console.log({last});
文档链接:Array.prototype.at()
获取最后一个元素有多种方法
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);
如果你不想构建一个数组...
var str = "how,are you doing, today?";
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3");
The breakdown in english is:
/(anything)(any separator once)(anything that isn't a separator 0 or more times)/
replace命令表示用最后一个分隔符后面的内容替换整个字符串。
因此,您可以看到这可以被普遍应用。请注意,原始字符串不会被修改。
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 >>";
split
调用创建的,所以它不会被保留。从数组中弹出项目并不会改变原始字符串。 - Guffaslice
方法:var output = input.split(/[, ]+/).slice(-2);
。 - Guffa{1,}
的含义相同,即[, ]+
匹配集合中一个或多个字符(逗号和空格)。当您想要从字符串中获取所有单词时,它非常有用,但当您只想要最后一个单词时,它不会产生任何功能上的差异,它只会减少开销,因为数组中的字符串将更少。 - Guffa