You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript提取文件名与扩展名的方法实现需求

提取文件名和扩展名的JavaScript方法

这里有两种实用方案,分别适配浏览器和Node.js环境,都能正确处理包含相对路径(比如../)的输入,完美匹配你给出的示例需求:

浏览器环境方案

这个方案利用浏览器内置的URL API自动解析相对路径,无需额外依赖:

function extractFileNameAndExt(filePath) {
  // 用临时URL解析相对路径,得到规范化的绝对路径
  const normalizedPath = new URL(filePath, 'http://dummy.com').pathname;
  // 提取最后一个斜杠后的完整文件名(含扩展名)
  const fullFileName = normalizedPath.split('/').pop();
  // 找到最后一个点的位置,区分文件名和扩展名
  const dotIndex = fullFileName.lastIndexOf('.');
  
  if (dotIndex === -1) {
    // 处理无扩展名的文件
    return [fullFileName, ''];
  }
  
  const fileName = fullFileName.slice(0, dotIndex);
  const extension = fullFileName.slice(dotIndex + 1);
  return [fileName, extension];
}

// 测试你的示例路径
const testPath = '/vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json';
console.log(extractFileNameAndExt(testPath)); 
// 输出: ["tranzila_2018-01-09_08-58-47","json"]

关键逻辑说明:

  • URL API会自动处理路径中的../和./,帮我们把相对路径转换成规范化的绝对路径,比手动写正则或字符串处理要可靠得多。
  • 用split('/').pop()精准获取最后一个目录分隔符后的文件名部分,避免前面路径的干扰。
  • 用lastIndexOf('.')而不是split('.'),是为了兼容文件名本身包含多个点的情况(比如my.report.v1.pdf会提取my.report.v1和pdf)。

Node.js环境方案

如果是在Node.js环境下,直接用内置的path模块更简洁,这是Node处理文件路径的标准工具:

const path = require('path');

function extractFileNameAndExt(filePath) {
  // 解析路径为绝对路径,自动处理相对路径片段
  const normalizedPath = path.resolve(filePath);
  // 获取完整文件名(含扩展名)
  const fullFileName = path.basename(normalizedPath);
  // 获取扩展名(去掉开头的点)
  const extension = path.extname(fullFileName).slice(1);
  // 获取不带扩展名的文件名
  const fileName = path.basename(fullFileName, `.${extension}`);
  
  return [fileName, extension];
}

// 测试示例
const testPath = '/vagrant/modules/americabuy/tranzilaNotifications/class/../../../a_tranzila/log/tranzila_2018-01-09_08-58-47.json';
console.log(extractFileNameAndExt(testPath)); 
// 输出: ["tranzila_2018-01-09_08-58-47","json"]

关键逻辑说明:

  • path.resolve()是Node处理路径的核心方法,能自动解析所有相对路径片段,返回绝对路径。
  • path.basename()和path.extname()是专门用于提取文件名和扩展名的工具方法,无需自己处理字符串分割,更稳定。

内容的提问来源于stack exchange,提问作者Elia Weiss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:27:02