¿Hay alguna manera de que pueda obtener el último valor (basado en el símbolo '\') de una ruta completa?
Ejemplo:
C:\Documents and Settings\img\recycled log.jpg
Con este caso, solo quiero obtener recycled log.jpg
de la ruta completa en JavaScript.
javascript
Jin Yong
fuente
fuente
replace
es mucho más lento quesubstr
, lo que se puede usar junto conlastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, aunque para `\\` , funciona bien."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
devolucionesmoo.js
Solo por el bien del rendimiento, probé todas las respuestas dadas aquí:
Y el ganador es la respuesta al estilo Split y Pop , ¡Gracias a bobince !
fuente
path.split(/.*[\/|\\]/)[1];
En Node.js, puede usar el módulo de análisis de Path ...
fuente
basename
función:path.basename(file)
¿De qué plataforma proviene el camino? Las rutas de Windows son diferentes de las rutas POSIX son diferentes de las rutas de Mac OS 9 son diferentes de las rutas del sistema operativo RISC son diferentes ...
Si se trata de una aplicación web donde el nombre de archivo puede provenir de diferentes plataformas, no hay una solución única. Sin embargo, una puñalada razonable es usar '\' (Windows) y '/' (Linux / Unix / Mac y también una alternativa en Windows) como separadores de ruta. Aquí hay una versión que no es RegExp para mayor diversión:
fuente
var path = '\\Dir2\\Sub1\\SubSub1'; //path = '/Dir2/Sub1/SubSub1'; path = path.split('\\').length > 1 ? path.split('\\').slice(0, -1).join('\\') : path; path = path.split('/').length > 1 ? path.split('/').slice(0, -1).join('/') : path; console.log(path);
Ates, su solución no protege contra una cadena vacía como entrada. En ese caso, falla con
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.Bobince, aquí hay una versión de nickf que maneja delimitadores de ruta DOS, POSIX y HFS (y cadenas vacías):
fuente
La siguiente línea de código JavaScript le dará el nombre del archivo.
fuente
No es más conciso que la respuesta de nickf , pero esta directamente "extrae" la respuesta en lugar de reemplazar las partes no deseadas con una cadena vacía:
fuente
Una pregunta que pregunta "obtener nombre de archivo sin extensión" se refiere aquí, pero no hay solución para eso. Aquí está la solución modificada de la solución de Bobbie.
fuente
Otro
Aquí la división tiene una expresión regular con una clase de caracteres.
Los dos caracteres deben escaparse con '\'
O use la matriz para dividir
Sería la forma de empujar dinámicamente más separadores en una matriz, si es necesario.
Si
fullPath
se establece explícitamente por una cadena en su código, ¡debe escapar de la barra invertida !Me gusta
"C:\\Documents and Settings\\img\\recycled log.jpg"
fuente
Yo suelo:
Reemplaza el último,
\
por lo que también funciona con carpetas.fuente
fuente
La respuesta completa es:
fuente
Pequeña función para incluir en su proyecto para determinar el nombre de archivo de una ruta completa para Windows, así como las rutas absolutas GNU / Linux y UNIX.
fuente
fuente
Script exitoso para su pregunta, Prueba completa
fuente
Esta solución es mucho más simple y genérica, tanto para 'nombre de archivo' como para 'ruta'.
fuente
fuente
var file_name = file_path.substring(file_path.lastIndexOf('/'));
fuente