Si tiene que procesar una variable que contiene la ruta completa (ej .:) thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg"
y desea devolver solo "nombre de archivo", puede usar:
theName = thePath.split("/").slice(-1).join().split(".").shift();
el resultado será theName == "filename" ;
Para probarlo escriba el siguiente comando en la ventana de la consola de su depurador de Chrome
window.location.pathname.split("/").slice(-1).join().split(".").shift()
Si tiene que procesar solo el nombre del archivo y su extensión (ej .:) theNameWithExt = "filename.jpg"
:
theName = theNameWithExt.split(".").shift();
el resultado será theName == "filename" , el mismo que el anterior;
Notas:
- El primero es un poco más lento porque realiza más operaciones; pero funciona en ambos casos, en otras palabras, puede extraer el nombre del archivo sin extensión de una cadena dada que contiene una ruta o un nombre de archivo con ex. Mientras que el segundo funciona solo si la variable dada contiene un nombre de archivo con ext como filename.ext pero es un poco más rápido.
- Ambas soluciones funcionan para archivos locales y de servidor;
Pero no puedo decir nada sobre la comparación de rendimiento con otras respuestas ni sobre la compatibilidad del navegador o el sistema operativo.
fragmento de trabajo 1: la ruta completa
var thePath = "http://stackoverflow.com/directory/subdirectory/filename.jpg";
theName = thePath.split("/").slice(-1).join().split(".").shift();
alert(theName);
fragmento de trabajo 2: el nombre del archivo con extensión
var theNameWithExt = "filename.jpg";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);
fragmento de trabajo 2: el nombre del archivo con doble extensión
var theNameWithExt = "filename.tar.gz";
theName = theNameWithExt.split("/").slice(-1).join().split(".").shift();
alert(theName);