JavaScript去除文件名称中的后缀名的多种方法
更新时间:2025年12月07日 14:50:26 作者:Never_Satisfied
本文介绍了JavaScript中去除文件名后缀名的四种方法,并推荐使用substring()和lastIndexOf()方法,因为它简洁易懂,性能较好,并能处理特殊情况,需要的朋友可以参考下
在JavaScript中有多种方法可以去掉文件名的后缀名,以下是几种常见的方法:
方法1:使用substring()和lastIndexOf()
function removeFileExtension(filename) {
const lastDotIndex = filename.lastIndexOf('.');
if (lastDotIndex === -1) {
return filename; // 没有后缀名,直接返回
}
return filename.substring(0, lastDotIndex);
}
// 示例
const filename1 = "document.txt";
const filename2 = "image.jpeg";
const filename3 = "no_extension";
console.log(removeFileExtension(filename1)); // "document"
console.log(removeFileExtension(filename2)); // "image"
console.log(removeFileExtension(filename3)); // "no_extension"
方法2:使用split()和pop()
function removeFileExtension(filename) {
const parts = filename.split('.');
if (parts.length > 1) {
parts.pop(); // 移除最后一部分(后缀名)
return parts.join('.');
}
return filename; // 没有后缀名
}
// 示例
console.log(removeFileExtension("photo.jpg")); // "photo"
console.log(removeFileExtension("archive.tar.gz")); // "archive.tar"
方法3:使用正则表达式
function removeFileExtension(filename) {
return filename.replace(/\.[^/.]+$/, "");
}
// 示例
console.log(removeFileExtension("script.js")); // "script"
console.log(removeFileExtension("config.json")); // "config"
方法4:使用 ES6 的数组解构
function removeFileExtension(filename) {
const [name] = filename.split('.').slice(0, -1).concat(filename.split('.').slice(0, -1).length ? [] : [filename]);
return name || filename;
}
// 简化版本(适用于大多数情况)
function removeFileExtensionSimple(filename) {
const parts = filename.split('.');
return parts.length > 1 ? parts.slice(0, -1).join('.') : filename;
}
处理特殊情况
如果需要处理一些特殊情况(比如以点开头的隐藏文件):
function removeFileExtensionSafe(filename) {
// 排除以点开头的隐藏文件(如 .gitignore)
if (filename.startsWith('.') && filename.split('.').length === 2) {
return filename;
}
const lastDotIndex = filename.lastIndexOf('.');
return lastDotIndex === -1 ? filename : filename.substring(0, lastDotIndex);
}
// 示例
console.log(removeFileExtensionSafe(".gitignore")); // ".gitignore"
console.log(removeFileExtensionSafe("normal.file.txt")); // "normal.file"
推荐方案
对于大多数情况,我推荐使用方法1,因为它:
- 代码简洁易懂
- 性能较好
- 处理了没有后缀名的情况
- 可以正确处理多个点的情况(如
file.name.txt→file.name)
function getFileNameWithoutExtension(filename) {
const lastDotIndex = filename.lastIndexOf('.');
return lastDotIndex === -1 ? filename : filename.slice(0, lastDotIndex);
}
选择哪种方法主要取决于你的具体需求和使用场景。
到此这篇关于JavaScript去除文件名称中的后缀名的多种方法的文章就介绍到这了,更多相关JavaScript去除文件名后缀名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
基于Arcgis for javascript实现百度地图ABCD marker的效果
本篇文章由脚本之家小编给大家分享的基于Arcgis for javascript实现百度地图ABCD marker的效果,需要的朋友一起学习吧2015-09-09


最新评论