如何使用js / jquery检索图像路径中的数字(ID)?

时间:2012-12-07 09:08:28

标签: javascript jquery

这是样本路径,假设格式是固定的

对于第4张图片,路径是' demo/medium/Web081112_P004_medium.jpg'

所以如果图像是第100个,那么

' demo/medium/Web081112_P100_medium.jpg'

有没有办法以这种格式获取数字,我是否考虑过使用reg exp?但它可能会导致问题,因为我可能会检索004而不是4,如何解决这个问题?感谢

3 个答案:

答案 0 :(得分:4)

此答案基于原始问题中的信息

示例路径,假设格式已修复

如果字符串不会改变,那么你可以使用split:

var num = parseInt(path.split("_P")[1],10);

注意请记住parseInt需要基数10来删除前导0,否则会使数字为OCTAL

另请注意,在_P上拆分将(如Cerbrus所述)获取仍与parseInt一起使用的字符串004_medium.jpg,因为parseInt将忽略尾随的非数字字符

答案 1 :(得分:1)

是的,那个肯定可能是正则表达式。

/.*?\/.*?\/.*?_P(\d+).*?/.exec( imagesource )[ 1 ];

这样,您可以使用“严格”模式定义,只有在输入字符串具有特定格式时才解析该数字。您可以将其写得更加草率,如评论

中所建议的那样
/.*?_P(\d+)/.exec( imagesource )[ 1 ];

免责声明:我不是那个正则表达式的天才,所以请评论任何优化:P

答案 2 :(得分:0)

您不需要正则表达式,这将在int的第一次和第二次出现之间得到"_"

var path = 'demo/medium/Web081112_P100_medium.jpg'
var id = ~~path.split('_')[1].substr(1);

如果删除.substr(1)前缀,请删除"P"

我使用~~作为一种快速而肮脏的方式将输出string转换为int(双按位不是),因为您需要可能不会对你的图片产生负面评价。

此外,this appears to be faster还有另一个答案中建议的parseInt功能,在Google Chrome上 但是,不是在IE / Firefox上but they've lost the lead position as most-used browsers already