Если вам нужно обработать переменную, которая содержит полный путь (например, thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
), и вы хотите вернуть только «имя файла», вы можете использовать:
theName = thePath.split("/").slice(-1).join().split(".").shift();
результатом будет имя == "имя файла" ;
Чтобы попробовать это, напишите следующую команду в окне консоли вашего отладчика Chrome:
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Если вам нужно обработать только имя файла и его расширение (например:) theNameWithExt = "filename.jpg"
:
theName = theNameWithExt.split(".").shift();
результат будет theName == "filename" , такой же, как указано выше;
Ноты:
- Первый немного медленнее, потому что выполняет больше операций; но работает в обоих случаях, другими словами, он может извлечь имя файла без расширения из заданной строки, содержащей путь или имя файла с помощью ex. В то время как второй работает, только если данная переменная содержит имя файла с 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);