Comment obtenir le nom de fichier à partir d'un chemin d'accès complet à l'aide de JavaScript?
Est-il un moyen que je peux obtenir la dernière valeur (basé sur le '\' symbole) à partir d'un chemin complet?
Exemple:
C:\Documents and Settings\img\recycled log.jpg
Avec cette affaire, je veux juste recycled log.jpg
à partir du chemin d'accès complet dans le JavaScript.
Vous devez vous connecter pour publier un commentaire.
Cela permettra de gérer à la fois \ OU /dans les chemins de
replace
est bien plus lent quesubstr
, qui peut être utilisé en conjonction aveclastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, bien que pour `\\`, il fonctionne très bien.\
dans un JavaScript chaîne toujours crée un personnage échapper, donc\n
insérer un caractère de nouvelle ligne, et tout méconnu le caractère d'échappement est changé pour le caractère suivant le caractère d'échappement. Par conséquent, un en arrière-slash dans une chaîne de caractères doivent être échappés à l'être qui le précède avec l'autre en arrière-barre oblique. Essayer dans ce JSFiddle. Vous devriez avoir remarqué que la sortie de la chaîne ne contient pas de tous en arrière-barres obliques."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
retournemoo.js
Juste pour le plaisir de la performance, j'ai testé toutes les réponses ici:
Et le gagnant est le Split et Pop style de réponse, Grâce à bobince !
path.split(/.*[\/|\\]/)[1];
Ce que la plateforme ne le voie venir? Windows chemins sont différents de POSIX chemins sont différents à partir de Mac OS 9 chemins sont différents de RISC OS chemins sont différents...
Si c'est une application web dont le nom peut venir de différentes plates-formes, il n'y a pas de solution unique. Toutefois raisonnable stab est d'utiliser '\' (Windows) et '/' (Linux/Unix/Mac et aussi une alternative à Windows) comme des séparateurs de chemin. Voici un non-RegExp version pour plus de plaisir:
pathname
est "undefined"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);
Dans Node.js, vous pouvez utiliser Chemin de l'analyser module...
Ates, votre solution ne protège pas contre une chaîne vide en entrée. Dans ce cas, il échoue avec
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.bobince, voici une version de nickf du qui gère DOS, POSIX, et HFS chemin des délimiteurs (et les cordes à vide):
La ligne suivante de code JavaScript va vous donner le nom de fichier.
Pas plus concis que nickf de réponse, mais celui-ci directement "extraits" la réponse au lieu de remplacer les parties non désirées avec une chaîne vide:
À une question demandant "obtenir le nom du fichier sans l'extension" consulter ici, mais pas de solution pour cela.
Voici la solution modifié à partir de Bobbie la solution.
J'utilise:
Il remplace le dernier
\
de sorte qu'il fonctionne aussi avec des dossiers.La réponse complète est:
Peu de fonction à inclure dans votre projet pour déterminer le nom de fichier à partir d'un chemin d'accès complet pour Windows et sous GNU/Linux & UNIX chemins absolus.
Un autre
Ici split ont une expression régulière avec un classe de personnage
Les deux caractères doivent être échappés avec '\'
Et celui-ci a un tableau à split avec.
Facile à pousser des séparateurs dans un tableau, si vous voulez que!
Si vous code une chaîne de caractères dans votre programme, vous devez vous échapper à la barre oblique inverse!
Comme
"C:\\Documents and Settings\\img\\recycled log.jpg"
Avec succès Script pour votre question ,le Plein de Test
var file_name = file_path.substring(file_path.lastIndexOf('/'));
reportez-vous à partir de
http://www.codeprojectdownload.com