67 votes

Besoin d'une fonction de nom de base en Javascript

J'ai besoin d'une fonction de nom de base courte (une ligne ?) pour Javascript :

 basename("/a/folder/file.a.ext") -> "file.a"
basename("/a/folder/file.ext") -> "file"
basename("/a/folder/file") -> "file"

Cela devrait supprimer le chemin et toute extension.

Mettre à jour: Pour le point au début, ce serait bien de traiter comme des fichiers "spéciaux"

 basename("/a/folder/.file.a.ext") -> ".file.a"
basename("/a/folder/.file.ext") -> ".file"
basename("/a/folder/.file") -> ".file" # empty is Ok
basename("/a/folder/.fil") -> ".fil"  # empty is Ok
basename("/a/folder/.file..a..") -> # does'nt matter

90voto

Tomo Huynh Points 929
function basename(path) {
   return path.split('/').reverse()[0];
}

Divise le chemin en répertoires de composants et nom de fichier, puis renvoie le dernier élément (le nom de fichier) qui est le dernier élément du tableau.

78voto

Nivas Points 10159
function baseName(str)
{
   var base = new String(str).substring(str.lastIndexOf('/') + 1); 
    if(base.lastIndexOf(".") != -1)       
        base = base.substring(0, base.lastIndexOf("."));
   return base;
}

Si vous pouvez avoir à la fois / et \ comme séparateurs, vous devez modifier le code pour ajouter une ligne supplémentaire

16voto

Randy Points 81

Essayez peut-être d'utiliser les packages existants si vous le pouvez. http://nodejs.org/api/path.html

 var path = require('path');
var str = '/path/to/file/test.html'

var fileNameStringWithoutExtention = path.basename(str, '.html');
// returns 'test'

// let path determine the extension
var fileNameStringWithoutExtention = path.basename(str, path.extname(str));
// returns 'test'

Autres exemples :

 var pathString = path.dirname(str);
var fileNameStringWithExtention = path.basename(str);
var fullPathAndFileNameString = path.join(pathString, fileNameString);

7voto

user187291 Points 28951
 basename = function(path) {
    return path.replace(/.*\/|\.[^.]*$/g, '');
 }

remplacer tout ce qui se termine par une barre oblique .*\/ ou un point - certains non-points - terminer par \.[^.]*$ par rien

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X