如何在文件名中的最后一个下划线后捕捉所有内容?
例如:24235235adasd_4.jpg
进入4.jpg
再次感谢!
答案 0 :(得分:13)
var foo = '24235235adasd_4.jpg';
var bar = foo.substr(foo.lastIndexOf('_') + 1);
*请注意,这不适用于那些在其扩展名中带有“_”的不常见文件(例如,我看过一些名为filename.tx_
的文件)
答案 1 :(得分:11)
var end = "24235235adasd_4.jpg".match(/.*_(.*)/)[1];
编辑:哎呀,ungreedy修饰符错了。
编辑2:运行基准测试后,这是最慢的方法。不要使用它;)这是基准和结果。
<强>基准:强>
var MAX = 100000, i = 0,
s = new Date(), e = new Date(),
str = "24235235ad_as___4.jpg",
methods = {
"Matching": function() { return str.match(/.*_(.*)/)[1]; },
"Substr": function() { return str.substr(str.lastIndexOf('_') + 1); },
"Split/pop": function() { return str.split('_').pop(); },
"Replace": function() { return str.replace(/.*_/,''); }
};
console.info("Each method over %d iterations", MAX);
for ( var m in methods ) {
if ( !methods.hasOwnProperty(m) ) { continue; }
i = 0;
s = new Date();
do {
methods[m]();
} while ( ++i<MAX );
e = new Date();
console.info(m);
console.log("Result: '%s'", methods[m]());
console.log("Total: %dms; average: %dms", +e - +s, (+e - +s) / MAX);
}
<强>结果:强>
Each method over 100000 iterations
Matching
Result: '4.jpg'
Total: 1079ms; average: 0.01079ms
Substr
Result: '4.jpg'
Total: 371ms; average: 0.00371ms
Split/pop
Result: '4.jpg'
Total: 640ms; average: 0.0064ms
Replace
Result: '4.jpg'
Total: 596ms; average: 0.00596ms
答案 2 :(得分:9)
"24235235adasd_4.jpg".split('_').pop();
答案 3 :(得分:0)
var end = filename.replace(/.*_/,'');