0

这是示例路径,假设格式是固定的

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

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

' demo/medium/Web081112_P100_medium.jpg'

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

4

3 回答 3

4

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

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

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

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

注意记住 parseInt 需要基数 10 来删除前导 0,否则会使数字变为八进制

另请注意,拆分_P将(如 Cerbrus 所述)获得004_medium.jpg仍然适用于 parseInt 的字符串,因为 parseInt 将忽略尾随的非数字字符

于 2012-12-07T09:13:50.210 回答
1

是的,这绝对可能是正则表达式的工作。

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

这样,您可以有一个“严格”的模式定义,如果输入字符串具有某种格式,您只解析该数字。你可以写得更草率,就像评论中建议的那样

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

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

于 2012-12-07T09:11:07.010 回答
0

您不需要正则表达式,这将int在第一次和第二次出现"_".

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

删除.substr(1)以防万一"P"前缀被删除。

我正在使用~~一种快速而肮脏的方式将输出转换stringint(双位非),因为您的图像可能不会有负 id。

此外,这似乎parseIntGoogle Chrome 上另一个答案中建议的功能更快。
然而,不是在 IE / Firefox 上,但它们已经失去了作为最常用浏览器的领先地位

于 2012-12-07T09:13:39.360 回答