JavaScript去除文件名稱中的后綴名的多種方法
在JavaScript中有多種方法可以去掉文件名的后綴名,以下是幾種常見(jiàn)的方法:
方法1:使用substring()和lastIndexOf()
function removeFileExtension(filename) {
const lastDotIndex = filename.lastIndexOf('.');
if (lastDotIndex === -1) {
return filename; // 沒(méi)有后綴名,直接返回
}
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; // 沒(méi)有后綴名
}
// 示例
console.log(removeFileExtension("photo.jpg")); // "photo"
console.log(removeFileExtension("archive.tar.gz")); // "archive.tar"
方法3:使用正則表達(dá)式
function removeFileExtension(filename) {
return filename.replace(/\.[^/.]+$/, "");
}
// 示例
console.log(removeFileExtension("script.js")); // "script"
console.log(removeFileExtension("config.json")); // "config"
方法4:使用 ES6 的數(shù)組解構(gòu)
function removeFileExtension(filename) {
const [name] = filename.split('.').slice(0, -1).concat(filename.split('.').slice(0, -1).length ? [] : [filename]);
return name || filename;
}
// 簡(jiǎn)化版本(適用于大多數(shù)情況)
function removeFileExtensionSimple(filename) {
const parts = filename.split('.');
return parts.length > 1 ? parts.slice(0, -1).join('.') : filename;
}
處理特殊情況
如果需要處理一些特殊情況(比如以點(diǎn)開(kāi)頭的隱藏文件):
function removeFileExtensionSafe(filename) {
// 排除以點(diǎn)開(kāi)頭的隱藏文件(如 .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"
推薦方案
對(duì)于大多數(shù)情況,我推薦使用方法1,因?yàn)樗?/p>
- 代碼簡(jiǎn)潔易懂
- 性能較好
- 處理了沒(méi)有后綴名的情況
- 可以正確處理多個(gè)點(diǎn)的情況(如
file.name.txt→file.name)
function getFileNameWithoutExtension(filename) {
const lastDotIndex = filename.lastIndexOf('.');
return lastDotIndex === -1 ? filename : filename.slice(0, lastDotIndex);
}
選擇哪種方法主要取決于你的具體需求和使用場(chǎng)景。
到此這篇關(guān)于JavaScript去除文件名稱中的后綴名的多種方法的文章就介紹到這了,更多相關(guān)JavaScript去除文件名后綴名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從parcel.js打包出錯(cuò)到選擇nvm的全部過(guò)程
這篇文章主要介紹了從parcel.js打包出錯(cuò)到選擇nvm的全部過(guò)程,需要的朋友可以參考下2018-01-01
JavaScript實(shí)現(xiàn)京東快遞單號(hào)查詢
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)京東快遞單號(hào)查詢,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11
Laravel中常見(jiàn)的錯(cuò)誤與解決方法小結(jié)
大家在用Laravel框架期間可能會(huì)遇到了不少問(wèn)題,現(xiàn)在我將自己遇到的一些問(wèn)題總結(jié)出來(lái),有一些調(diào)試起來(lái)著實(shí)不太容易,本文篩選出幾個(gè),希望這篇文章能讓大家在PHP開(kāi)發(fā)中少走一些彎路。2016-08-08
JS實(shí)現(xiàn)判斷移動(dòng)端PC端功能
這篇文章主要介紹了JS實(shí)現(xiàn)判斷移動(dòng)端PC端功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02
JavaScript 跨域之POST實(shí)現(xiàn)方法
本篇文章主要介紹了JavaScript 跨域之POST實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
JAVASCRIPT IE 與 FF中兼容問(wèn)題小結(jié)
在不同瀏覽器中對(duì)于一些屬性的支持也不一樣,下面是對(duì)ie和firefox的一些小結(jié)。2009-02-02
基于Arcgis for javascript實(shí)現(xiàn)百度地圖ABCD marker的效果
本篇文章由腳本之家小編給大家分享的基于Arcgis for javascript實(shí)現(xiàn)百度地圖ABCD marker的效果,需要的朋友一起學(xué)習(xí)吧2015-09-09

