在JavaScript字符串中仅返回最后一个下划线后面的文本

13

如果我有一个这样的字符串:

var str = 'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti';

如何获取最后一个下划线后面的字符串部分?

如果没有下划线,返回原始字符串。

在这种情况下,我只想要'hunti'


1
可能是重复的问题:如何在JavaScript中获取字符串的最后一部分? - I Hate Lazy
3个回答

29
var index = str.lastIndexOf("_");
var result = str.substr(index+1);

在我看来,我更喜欢这种方法。另一种方法需要更多的内存和处理。它必须创建数组,仅仅是为了获取最后一个项目,然后丢弃其余的数组。在你发布的示例中,这并不是很重要,但是这种方法只需要两行代码,而不是一行,我认为同样易读且功能相同。因此,我更喜欢这个答案。 - Eli Gassert
这种方法在美学上不太令我满意,因为它感觉有点啰嗦,但我愿意承认它更快。不过,除非他有非常长的字符串并且要执行数千次,否则我怀疑这不会产生明显的差异。 - Peter Olson
1
@EliGassert - 性能不太可能成为问题,但你说得对,substring比其他提出的方法快得多。这只取决于OP想如何处理它。 - RobG
2
这个答案是正确的,但你不需要分开执行这些步骤。 str.substring(str.lastIndexOf('_') + 1); - WebDevNerdStuff

15

非常简单,通过下划线将字符串拆分,并取最后一个元素。

var last = str.split("_").pop();

即使字符串中不包含任何下划线(它会返回原始字符串,如所需)。


4

您可以使用正则表达式:

'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti'.match(/[^_]*$/)[0];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接