Якщо вам доведеться обробити змінну, яка містить повний шлях (напр .:), thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
і ви хочете повернути просто "ім'я файлу", ви можете використовувати:
theName = thePath.split("/").slice(-1).join().split(".").shift();
результатом буде theName == "ім'я файлу" ;
Щоб спробувати це, напишіть таку команду у вікно консолі хромованого налагоджувача:
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Якщо вам потрібно обробити лише ім'я файлу та його розширення (напр .:) theNameWithExt = "filename.jpg"
:
theName = theNameWithExt.split(".").shift();
результатом буде theName == "ім'я файлу" , таким же, як вище;
Примітки:
- Перший - трохи повільніше, тому що виконує більше операцій; але працює в обох випадках, інакше кажучи, він може витягувати ім'я файлу без розширення із заданої рядки, що містить шлях або ім'я файлу з колишнім. Хоча друга працює лише в тому випадку, якщо дана змінна містить ім'я файлу з ext як filename.ext, але трохи швидше.
- Обидва рішення працюють як для локальних, так і для серверних файлів;
Але я нічого не можу сказати ні про порівняння продуктивності з іншими відповідями, ні про сумісність браузера чи ОС.
робочий фрагмент 1: повний шлях
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
робочий фрагмент 2: ім'я файлу з розширенням
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
робочий фрагмент 2: ім'я файлу з подвійним розширенням
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);