例如,假设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()是一个函数,做字符检查。
当前回答
在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文档页。
其他回答
var fileName = "something.extension";
fileName.slice(0, -path.extname(fileName).length) // === "something"
如果你使用的是Node.js,一个简单的答案就是第一条注释。 我的任务是我需要从Node服务器中删除Cloudinary中的一个图像,我只需要获得图像名称。 例子:
const path = require("path")
const image=xyz.jpg;
const img= path.parse(image).name
console.log(img) // xyz
这是我用来从文件名中删除扩展名的代码,不使用regex或indexOf (indexOf在IE8中不支持)。它假定扩展名是最后一个'之后的任何文本。'字符。
它适用于:
没有扩展名的文件:"myletter" 使用'文件。"my.letter.txt" 未知文件扩展名长度:"my.letter.html"
代码如下:
var filename = "my.letter.txt" // some filename
var substrings = filename.split('.'); // split the string at '.'
if (substrings.length == 1)
{
return filename; // there was no file extension, file was something like 'myfile'
}
else
{
var ext = substrings.pop(); // remove the last element
var name = substrings.join(""); // rejoin the remaining elements without separator
name = ([name, ext]).join("."); // readd the extension
return name;
}
我喜欢这篇文章,因为它只有一行字,读起来不难:
filename.substring(0, filename.lastIndexOf('.')) || filename
简单的一个:
var n = str.lastIndexOf(".");
return n > -1 ? str.substr(0, n) : str;