Wie erhalte ich den letzten Ordnernamen aus dem Ordnerpfad in Javascript?
Lesezeit: 4 Minuten
Geben Sie in Javascript/jquery einen Pfad zu einem Ordner wie dem folgenden an:
"http://www.blah/foo/bar/"
oder
"http://www.blah/foo/bar" (this one doesn't have a slash in the end)
Wie können Sie den Namen des letzten Ordners extrahieren? In diesem Fall wäre es so "bar".
Gibt es einen einfachen Weg durch eine eingebaute Funktion?
Danke.
Denys Séguret
Nutzen Sie die Kraft des regulären Ausdrucks:
var name = path.match(/([^\/]*)\/*$/)[1]
Beachten Sie, dass dies nicht der letzte „Ordner“ ist (der in Ihrem Fall und im allgemeinen Fall einer URL nicht definiert ist), sondern das letzte Pfad-Token.
das wird wiederkommen bar/ wenn Pfad hat / schließlich
– Adil Shaikh
22. Mai 2013 um 15:13
@pXL behoben (fehlerhaftes Kopieren und Einfügen)
– Denys Séguret
22. Mai 2013 um 15:14
Hinweis: (Titel lautet: „So erhalten Sie den letzten Ordnernamen“) Das Obige wird zurückgegeben about.html zum Beispiel: /foo/bar/about.html
– Roko C. Buljan
16. September 2014 um 14:33
@RokoC.Buljan Richtig. Aber ich denke, das war es, was OP verlangt hat.
– Denys Séguret
16. September 2014 um 14:36 Uhr
@dystroy ja gib mir5! Es war keine Kritik, nur eine NB 🙂 🙂
– Roko C. Buljan
16. September 2014 um 14:37 Uhr
David Fregoli
Verwenden Sie reguläre Ausdrücke! oder:
var arr="http://www.blah/foo/bar/".split("https://stackoverflow.com/");
var last = arr[arr.length-1] || arr[arr.length-2];
var arr="http://www.blah/foo/bar/////".split("https://stackoverflow.com/");
var last = (function trololol(i) {
return arr[i] || trololol(i-1);
})(arr.length-1);
rekursive Funktion dann :p
– David Fregoli
22. Mai 2013 um 15:12
@Matt Das sieht nicht wirklich nach einem Pfad aus. Was soll das Ergebnis sein?
– Denys Séguret
22. Mai 2013 um 15:14
@dystroy Es dürfen ein (gültiger und funktionierender) Pfad auf der Serverseite sein und Adressen dynamisch generieren …
– Benutzer1823761
22. Mai 2013 um 15:16
@dystroy: Es war größtenteils ein unbeschwerter Kommentar, aber entweder eine leere Zeichenfolge oder der „Balken“, denke ich, je nachdem, welcher Anwendungsfall das OP verwendet. Das Format funktioniert immer noch auf den meisten (allen?) Webservern. Ich bin mir nicht sicher, ob es irgendwo Teil einer Spezifikation ist.
– Matt
22. Mai 2013 um 15:20 Uhr
Es sieht so aus, als würden Sie gerne reguläre Ausdrücke kennenlernen. Eine gute Möglichkeit zu lernen ist das Anschauen [regex] Stellen Sie Fragen zu SO und versuchen Sie, die Antwort zu finden, ohne sich die anderen anzusehen (zumindest bis Sie genug versucht haben). Schauen Sie sich dabei am besten um Diese Seite.
– Denys Séguret
22. Mai 2013 um 16:02 Uhr
Schau dir das an:
var lastFolder = location.href.split("https://stackoverflow.com/").filter(function(el) {
return el.trim().length > 0;
}).pop();
var myString = "http://www.blah/foo/bar";
var pathElements = myString.replace(/\/$/, '').split("https://stackoverflow.com/");
var lastFolder = pathElements[pathElements.length - 1];
Dies ist reines JavaScript und benötigt kein jQuery.
Normalerweise verwende ich die Kombination von split Und pop In Javascript ist es bereits sauber, da ich normalerweise die Ordneradressen von aws s3 erhalte:
Obwohl dies möglicherweise nicht die eleganteste Antwort ist, scheint sie für jemanden, der sich mit regulären Ausdrücken möglicherweise nicht auskennt, am einfachsten zu verstehen zu sein.
JSFiddle wurde aktualisiert, um die Ergebnisse anzuzeigen.
var str = "...";
var segments = str.split("https://stackoverflow.com/");
var lastDir = (segments.length > 1) ? segments[segments.length - 2] : "";
Das erste Beispiel ergibt „bar“. Das zweite Beispiel ergibt „foo“.
Wenn Sie den abschließenden Schrägstrich ignorieren und das letzte Segment auch als Ordner betrachten möchten, reicht eine leichte Änderung an RegExp von @bdesham aus:
var segments = str.replace(/\/+$/, '').split("https://stackoverflow.com/");
var lastDir = (segments.length > 0) ? segments[segments.length - 1] : "";
Ich habe Ihre Antwort für Sie formatiert. Achten Sie beim Bearbeiten auf die Schaltflächen in der Symbolleiste.
– Denys Séguret
22. Mai 2013 um 15:20 Uhr
@dystroy Danke, ich glaube, ich habe den Abschlag von GitHub vermasselt.
– LexLythius
22. Mai 2013 um 15:28
Ich denke, was Sie tun möchten, ist nicht korrekt, da der abschließende Schrägstrich bedeutet, dass das letzte Segment ein Verzeichnis ist (die einzige wirkliche syntaktische Möglichkeit, einzelne Ordner und Dateien zu erkennen), und das könnte Sie in Schwierigkeiten bringen, wenn Sie etwas RESTful damit machen Das. Ich werde meine Antwort jedoch bearbeiten
– LexLythius
22. Mai 2013 um 22:46
14520200cookie-checkWie erhalte ich den letzten Ordnernamen aus dem Ordnerpfad in Javascript?yes