此Javascript代码从文件列表中删除第一个文件名,然后删除其扩展名:
var fileNoExt = filelist.shift();
fileNoExt = fileNoExt.substr(0, fileNoExt.lastIndexOf('.'));
我很好奇 - 是否可以将此代码转换为单行代码?
答案 0 :(得分:3)
这是一个单行:
var filelist = ['file.name.ext', 'some.another.string']
filelist.shift().split('.').slice(0, -1).join('.') // 'file.name'
答案 1 :(得分:3)
使用正则表达式怎么样?
如果您想在.
之后强制执行扩展程序,请使用
var fileNoExt = filelist.shift().replace(/\.[^.]+$/, '');
否则,请使用
var fileNoExt = filelist.shift().replace(/\.[^.]*$/, '');
第二个匹配my_crazy_file.
和my_crazy_file.extension
,而第一个匹配my_crazy_file.extension
。
答案 2 :(得分:1)
"是否可以将此代码转换为一行代码?"
是,
var fileNoExt = filelist[0].substr(0, filelist.shift().lastIndexOf('.'));
但为什么呢?它在两条线上更清晰。