这是样本路径,假设格式是固定的
对于第4张图片,路径是' demo/medium/Web081112_P004_medium.jpg
'
所以如果图像是第100个,那么
' demo/medium/Web081112_P100_medium.jpg
'
有没有办法以这种格式获取数字,我是否考虑过使用reg exp?但它可能会导致问题,因为我可能会检索004而不是4,如何解决这个问题?感谢
答案 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。