1

此 Javascript 代码从文件列表中删除第一个文件名,然后删除其扩展名:

var fileNoExt = filelist.shift();
fileNoExt = fileNoExt.substr(0, fileNoExt.lastIndexOf('.'));

我很好奇 - 是否有可能将此代码变成单行代码?

4

3 回答 3

3

这是一个单行:

var filelist = ['file.name.ext', 'some.another.string']

filelist.shift().split('.').slice(0, -1).join('.') // 'file.name'
于 2013-06-04T23:08:09.343 回答
3

使用正则表达式怎么样?

如果要在 之后强制执行扩展.,请使用

var fileNoExt = filelist.shift().replace(/\.[^.]+$/, '');

否则,使用

var fileNoExt = filelist.shift().replace(/\.[^.]*$/, '');

第二个匹配my_crazy_file.my_crazy_file.extension而第一个只匹配my_crazy_file.extension

于 2013-06-04T23:10:07.517 回答
1

“有没有可能把这段代码变成单行代码?”

是的,

var fileNoExt = filelist[0].substr(0, filelist.shift().lastIndexOf('.'));

但为什么?两行更清楚。

于 2013-06-04T23:08:58.293 回答