例如,假设x = filename.jpg,我想要获取filename,其中filename可以是任何文件名(为了简化,我们假设文件名只包含[a-zA-Z0-9-_])。
我看到x.substring(0, x.indexOf('.jpg'))在DZone片段上,但x.substring(0, x.length-4)不会表现更好吗?因为,length是一个属性,不做字符检查,而indexOf()是一个函数,做字符检查。
例如,假设x = filename.jpg,我想要获取filename,其中filename可以是任何文件名(为了简化,我们假设文件名只包含[a-zA-Z0-9-_])。
我看到x.substring(0, x.indexOf('.jpg'))在DZone片段上,但x.substring(0, x.length-4)不会表现更好吗?因为,length是一个属性,不做字符检查,而indexOf()是一个函数,做字符检查。
当前回答
x.slice(0, -(x.split('.').pop().length + 1));
其他回答
在0.12.x之前的Node.js版本中:
路径。:文件名,path.extname(文件名)
当然,这也适用于0.12。X和以后。
我不知道这是否是一个有效的选项,但我使用这个:
name = filename.split(".");
// trimming with pop()
name.pop();
// getting the name with join()
name.join('.'); // we split by '.' and we join by '.' to restore other eventual points.
这不仅仅是我知道的一种操作,但至少它应该总是有效的!
更新:如果你想要一个在线,这里你是:
(name.split(“。”)。片(0,1)). join(“。”)
简单的一个:
var n = str.lastIndexOf(".");
return n > -1 ? str.substr(0, n) : str;
在node.js中,不带扩展名的文件名可以通过如下方式获取。
const path = require('path');
const filename = 'hello.html';
path.parse(filename).name; //=> "hello"
path.parse(filename).ext; //=> ".html"
path.parse(filename).base; //=> "hello.html"
进一步的解释在Node.js文档页。
不知道哪个会执行得更快,但当涉及到。jpeg或。html等扩展名时,这将更可靠
x.replace(/\.[^/.]+$/, "")