JavaScript lastIndexOf()

5

在C#中,我可以这样做。

string ID = "ContentPlaceHolderDefault_MainSiteSectionArea_MyPagePlaceHolder_Item4_FavoritAmusementCalender_6_deleteRight_2";   
ID = ID.Substring(ID.LastIndexOf("_") + 1); 

如何在jQuery / JavaScript中最轻松地返回最后一个整数2

这个id是动态创建的,现在可以是多达3位数字。

提前感谢。


jQuery不适用于字符串操作,但是JavaScript语言有.indexOf().lastIndexOf().substr().substring().slice()和其他字符串方法。请参阅MDN获取文档。 - user1106925
4个回答

13

你差一点就成功了——只是因为大小写敏感的原因:

ID = ID.substring(ID.lastIndexOf("_") + 1);

JS Fiddle示例


5

JavaScript还有一个lastIndexOf()方法,详见这里。因此您可以使用以下代码:

var str1 = "Blah, blah, blah Calender_6_deleteRight_272";
var str2 = str1.substr (str1.lastIndexOf ("_") + 1);

这会给你 272

请注意,如果字符串不包含下划线,您将完整地得到原始字符串。在您的特定情况下可能需要或不需要这样 - 您可以将lastIndexOf()的结果与-1进行比较以检测此问题。


0

你应该用以下方式实现:

function get_last_part(str){
    var split = str.split('_');
    return split[split.length-1];
}
console.log(get_last_part("ContentPlaceHolderDefault_MainSiteSectionArea_MyPagePlaceHolder_Item4_FavoritAmusementCalender_6_deleteRight_2")); // this will write "2" in console

以这种方式,你会始终得到结果,而不需要担心索引超出问题。如果字符串中没有 _,它将始终返回字符串的最后一部分;否则,你会得到它的第一部分。
console.log(get_last_part("Content")); // will write "Content" into console

0

你尝试过使用 str.substr(-1) 吗?


ids是动态创建的,现在最多可以有3位数?我怎样能轻松地获取最后一个下划线后面的所有内容? - paradise_lost
1
请注意,IE不喜欢负值。您可以使用 str.substr(str.length-1) - Brombomb

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