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

5
如果我有一个字符串,例如:
var str = 'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti';

我该如何仅获取最后一个下划线之前的字符串?
在这种情况下,我只想要'Arthropoda_Arachnida_Zodariidae_Habronestes'。

你可以使用 RegExp "Arthropoda_Arachnida_Zodariidae_Habronestes_hunti".replace(/(.*)_.*$/g, "$1") - user6445533
4个回答

10

切片和lastIndexOf:

str.slice(0, str.lastIndexOf('_'));

打败我26秒。 - James Long
是的!:D 你是赢家!:D 随意点赞,因为我不想得到-1 ;) 我会在8分钟内接受这个答案 - Valor_
哈,詹姆斯。这种情况经常发生在我身上。当我打了一篇长篇回答时,总会有人比我更早回答。 :) - andrunix
这不包括下划线前面的最后一个字符(“s”)。 - Cos
不确定你是怎么得到那个 Cos 的。在浏览器和 Node 中,它对我来说都有效。 - andrunix

1
可以通过使用 split 方法来实现:
var s2= 'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti';
var s1= s2.substr(0, s2.lastIndexOf('_')); 

或者:

var str = 'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti';
str.split('_',4) 

1

结合使用 substrlastIndexOf 应该可以得到您想要的结果。

var str = "Arthropoda_Arachnida_Zodariidae_Habronestes_hunti";
var start = str.substr(0, str.lastIndexof("_"));
// -> "Arthropoda_Arachnida_Zodariidae_Habronestes"

1
尝试这个也可以。
var str = "Arthropoda_Arachnida_Zodariidae_Habronestes_hunti";
alert(str.substring(str.lastIndexOf("_")+1)) //to get Last word

alert(str.substring(0,str.lastIndexOf("_")))  //to get first part 

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