Necesito extraer el último subdirectorio y el nombre del archivo de una imagen como esta (el nombre del subdirectorio no es consistente y la posición del):
example.com/dw/image/v2/BFKH_PRD/on/demandware.static/-/Library-Sites-RefArchSharedLibrary/default/dw981dad25/Homepage/2021/11_NOV/1102/ HPNAVTILES / 1102_WGA_NAV_TILES_01_01.jpg ?sw=40&q=100
Estoy usando este js para extraer el nombre del archivo, que funciona muy bien, pero no tengo idea de cómo obtener el último subdirectorio.
function() { var url = {{INSERT URL}}; return url.substr(url.lastIndexOf('/')+1).split('?')[0]; }¡Gracias un montón!
Si se garantiza que su URL es válida, y comienza con un protocolo, intentaría analizarme lo menos posible. Aquí hay una solución:
url = 'https://example.com/dw/image/v2/BFKH_PRD/on/demandware.static/-/Library-Sites-RefArchSharedLibrary/default/dw981dad25/Homepage/2021/11_NOV/1102/HPNAVTILES/1102_WGA_NAV_TILES_01_01.jpg?sw=40&q=100'; const lastDirectory = (url) => { const parsed = new URL(url); const path = parsed.pathname.split('/'); return path.slice(-2).join('/'); }; console.log(lastDirectory(url)); Al usar la URL() de JavaScript, no tenemos que lidiar con la eliminación de la cadena de consulta (u otras partes de las URL): podemos extraer fácilmente la ruta y realizar nuestras operaciones en ella.
Producción:
HPNAVTILES/1102_WGA_NAV_TILES_01_01.jpgPodría obtener el último subdirectorio así
function() { var url = {{INSERT URL}}; directories = url.split("/") lastSubdirectory = directories[directories.length - 2] return lastSubdirectory }