Une certaine variable peut contenir un chemin relatif ou un chemin absolu. Quoi qu'il en soit, je dois pouvoir extraire le nom de fichier de la variable:
http://www.somesite.com/dir1/dir2/filename.gif
/dir1/dir2/filename.gif
La structure du répertoire est également arbitraire. Donc, fondamentalement, étant donné l'une des URL ci-dessus (avec une structure de répertoires arbitraire), je dois tirer 'filename.gif'. Merci d'avance
var index = yourstring.lastIndexOf("/") + 1;
var filename = yourstring.substr(index);
Manière plus courte
var filename = window.location.href.substr(window.location.href.lastIndexOf("/")+1);
var filename = url.match(/.*\/(.*)$/)[1];
var filename= url.split('/').pop()
J'utiliserais une expression régulière.
[^/]*$
Il sélectionne tout après la dernière barre oblique jusqu'à la fin. Vous pouvez l'agrandir pour sélectionner l'extension séparément:
/([^/]*?)(\.[^\./]*)?$
var path = window.location.pathname;
var filename = path.match(/.*\/([^/]+)\.([^?]+)/i)[1];
Utilisez ceci dans le cas où vous ne voulez pas que votre chaîne de requête fasse partie de votre nom de fichier (ce que vous n'avez probablement pas).
var URL = window.location.pathname; // Gets page name
var page = URL.substring(URL.lastIndexOf('/') + 1);
alert(page);
J'ai résolu ce problème par ceci:
var URL = window.location.pathname; // Gets page name
var page = URL.substring(URL.lastIndexOf('/') + 1);
// then display your filename to console
console.info(page)
// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(urlPath.lastIndexOf("/") + 1);
Pour vos exemples, la recherche de sous-chaîne sera probablement votre meilleure option.
Cependant, si vos URI sont en fait suffisamment complexes, vous pouvez essayer parseUri
de Steven Levithan:
parseUri(uri).file;
Il a 2 modes et chacun a sa part de bizarreries, alors assurez-vous de consultez la démo .
Utilisez une expression régulière, quelque chose dans ce sens devrait faire l'affaire:
[^/]+\.[^/]+
Bien que cela ne couvre pas tous les cas possibles, il devrait être plus que approprié pour la plupart des cas. Vous pouvez les utiliser:
var url = window.location.href;
var regex = new RegExp("[^/]+\.[^/]+");
var fileName = regex.exec(url);
J'espère que cela pourra aider
var pathnameArray = window.location.pathname.split("/");
var nameOfFile = pathnameArray[pathnameArray.length -1];
Il y a probablement des frais généraux que je ne connais pas lorsque j'envisage de créer un tableau plutôt que d'utiliser le substrat que d'autres ont mentionné. Alors peut-être que ce n'est pas une bonne réponse mais plutôt une approche différente pour résoudre le même problème.
var filename = /[^\\\/:*?"<>|\r\n]+$/i.exec(window.location.href)[0];
merci sam deng, semble fonctionner mais vous avez une faute de frappe mon ami:
// Extract filename from current page.
var filePath = window.location.pathname;
var fileName = filePath.substr(filePath.lastIndexOf("/") + 1);
Si votre URL est comme ceci:
yourdomain.com/app_dev.php
yourdomain.com/app_dev.php/article/2
et vous souhaitez simplement extraire le nom de fichier (/app_dev.php) afin de pouvoir créer un lien vers votre page d'accueil, utilisez ceci:
var filename = window.location.pathname.substr(0, window.location.pathname.indexOf("/", 1));
window.location = filename;