javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > JavaScript去除文件名后缀名

JavaScript去除文件名称中的后缀名的多种方法

作者: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,因为它:

function getFileNameWithoutExtension(filename) {
    const lastDotIndex = filename.lastIndexOf('.');
    return lastDotIndex === -1 ? filename : filename.slice(0, lastDotIndex);
}

选择哪种方法主要取决于你的具体需求和使用场景。

到此这篇关于JavaScript去除文件名称中的后缀名的多种方法的文章就介绍到这了,更多相关JavaScript去除文件名后缀名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文