如何使用JavaScript从文件路径中提取无扩展名的文件名?
提取不含扩展名的文件名(JavaScript)
你已经通过var documentName = $('#documentFile').val().split('\\').pop();拿到了带扩展名的文件名(比如report.pdf或者image.png),接下来只需要对这个documentName做进一步处理就能得到不含扩展名的部分。下面给你几种实用的方案:
方法1:lastIndexOf + slice(直观兼容)
这个方法核心是定位最后一个.的位置,再截取前面的内容,同时考虑边缘情况:
var documentName = $('#documentFile').val().split('\\').pop(); var fileNameWithoutExt; // 找到最后一个点的索引 const lastDotPos = documentName.lastIndexOf('.'); // 排除隐藏文件(比如.gitignore)和无扩展名的情况 if (lastDotPos > 0) { fileNameWithoutExt = documentName.slice(0, lastDotPos); } else { fileNameWithoutExt = documentName; }
方法2:正则表达式(简洁灵活)
用正则匹配并移除最后一个.及其后续内容,自动适配多数场景:
var documentName = $('#documentFile').val().split('\\').pop(); // 匹配最后一个点及之后的扩展名,替换为空 const fileNameWithoutExt = documentName.replace(/\.[^/.]+$/, '');
这个正则会跳过无扩展名的文件,也不会误处理.gitignore这类以.开头的隐藏文件。
方法3:拆分拼接(处理多扩展名场景)
如果你的文件名包含多个.(比如archive.tar.gz),想要保留前面的部分(得到archive.tar),可以用这种方式:
var documentName = $('#documentFile').val().split('\\').pop(); const nameParts = documentName.split('.'); // 有扩展名就去掉最后一段再拼接,没有就直接返回原文件名 const fileNameWithoutExt = nameParts.length > 1 ? nameParts.slice(0, -1).join('.') : documentName;
额外优化:兼容跨平台路径
如果路径可能出现Unix风格的/,可以把路径拆分的代码改成:
var documentName = $('#documentFile').val().split(/[\\/]/).pop();
内容的提问来源于stack exchange,提问作者Iam_NSA
相关产品推荐
相关产品推荐

