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