这是示例路径,假设格式是固定的
对于第 4 张图像,路径是 ' demo/medium/Web081112_P004_medium.jpg
'
所以如果图像是第 100 个,那么
' demo/medium/Web081112_P100_medium.jpg
'
有没有办法以这种格式获取数字,我考虑过使用reg exp?但这可能会导致问题,因为我可能会检索 004 而不是 4,如何解决这个问题?谢谢
这是示例路径,假设格式是固定的
对于第 4 张图像,路径是 ' demo/medium/Web081112_P004_medium.jpg
'
所以如果图像是第 100 个,那么
' demo/medium/Web081112_P100_medium.jpg
'
有没有办法以这种格式获取数字,我考虑过使用reg exp?但这可能会导致问题,因为我可能会检索 004 而不是 4,如何解决这个问题?谢谢
此答案基于原始问题中的消息
样本路径,假设格式是固定的
如果字符串不会改变,那么你可以使用 split:
var num = parseInt(path.split("_P")[1],10);
注意记住 parseInt 需要基数 10 来删除前导 0,否则会使数字变为八进制
另请注意,拆分_P
将(如 Cerbrus 所述)获得004_medium.jpg
仍然适用于 parseInt 的字符串,因为 parseInt 将忽略尾随的非数字字符
是的,这绝对可能是正则表达式的工作。
/.*?\/.*?\/.*?_P(\d+).*?/.exec( imagesource )[ 1 ];
这样,您可以有一个“严格”的模式定义,如果输入字符串具有某种格式,您只解析该数字。你可以写得更草率,就像评论中建议的那样
/.*?_P(\d+)/.exec( imagesource )[ 1 ];
免责声明:我不是那个正则表达式天才,所以请评论任何优化:P
您不需要正则表达式,这将int
在第一次和第二次出现"_"
.
var path = 'demo/medium/Web081112_P100_medium.jpg'
var id = ~~path.split('_')[1].substr(1);
删除.substr(1)
以防万一"P"
前缀被删除。
我正在使用~~
一种快速而肮脏的方式将输出转换string
为int
(双位非),因为您的图像可能不会有负 id。
此外,这似乎比parseInt
Google Chrome 上另一个答案中建议的功能更快。
然而,不是在 IE / Firefox 上,但它们已经失去了作为最常用浏览器的领先地位。