Wie bekomme ich es dazu, nur den “Datei”-Teil der URL im Warnfeld anzuzeigen?
Bitte, Verwenden Sie keine naive Lösung das spaltet die href von /. EIN URL Teile hat gemäß der Pfad: die Suchparameter (nach ?) und das Fragment (nach #). Wenn Sie eine URL als Zeichenfolge haben, verwenden Sie new URL(die Saite).pathname Erste. Wenn Sie nach der URL der aktuellen Seite suchen, verwenden Sie location.pathname. Dann benutzen .split("/") auf das Ergebnis. .filter(Boolean) entfernt leere Teile (zB nach abschließenden Schrägstrichen). .at(-1) (oder .pop() oder .slice(-1)[0]) erhält den letzten Teil des Pfads.
– Sebastian Simon
15. März um 22:08 Uhr
Sebastian Bart
Die anderen Antworten funktionieren möglicherweise, wenn der Pfad einfach ist und nur aus einfachen Pfadelementen besteht. Aber wenn es enthält Parameter abfragen außerdem brechen sie.
Besser verwenden URL Objekt dafür, um stattdessen eine robustere Lösung zu erhalten. Es ist eine geparste Interpretation der vorliegenden URL:
Falls jemand nicht grok was hier los ist: segments wird ein Array aller Pfade sein, also wenn Sie eine URL haben wie: https://a.com/b/c/d/?letters=true dann segments in diesem Beispiel ist gleich ['b', 'c', 'd', ''] weil der abschließende Schrägstrich nach d ergibt einen leeren String ''. Dann ist die last Variable sagt “nimm das letzte Element aus der segments Array und entfernen Sie es. Wenn dieses Element falsch ist, wiederholen Sie dasselbe” (logisches ODER), was zur Rückgabe führt d von meinem Beispiel hier.
$1 bedeutet, dass die einfangende Gruppe verwendet wird. Verwenden Sie in RegEx (\w+) die erste Gruppe, dann ersetzen Sie die gesamte Zeichenfolge durch die Erfassungsgruppe.
let str="http://mywebsite/folder/file";
let lastSegment = str.replace(/.*\/(\w+)\/?$/, '$1');
console.log(lastSegment);
Franz Verona
Javascript hat die mit dem String-Objekt verknüpfte Funktion split, die Ihnen helfen kann:
var url = "http://mywebsite/folder/file";
var array = url.split("https://stackoverflow.com/");
var lastsegment = array[array.length-1];
Gibt das letzte Segment zurück, unabhängig von abschließenden Schrägstrichen:
var val="http://mywebsite/folder/file//".split("https://stackoverflow.com/").filter(Boolean).pop();
console.log(val);
Sie möchten wahrscheinlich verwenden path.sep kein wörtlicher Schrägstrich. Sehen nodejs.org/api/path.html#path_path_sep. Dadurch bleibt Ihr Code über Betriebssysteme hinweg portierbar.
– Aaron
17. Juni 2020 um 17:10 Uhr
Nette Idee, würde aber im Browser nicht mehr funktionieren
– John Doherty
17. Juni 2020 um 23:09 Uhr
guter Punkt. Ich sollte sagen, dass dies in Befehlszeilenskripten/serverseitigen nodejs bevorzugt wird.
– Aaron
20. Juni 2020 um 17:58 Uhr
10106900cookie-checkLetztes URL-Segment mit JavaScriptyes
Bitte, Verwenden Sie keine naive Lösung das spaltet die
href
von/
. EIN URL Teile hat gemäß der Pfad: die Suchparameter (nach?
) und das Fragment (nach#
). Wenn Sie eine URL als Zeichenfolge haben, verwenden Sienew
URL
(
die Saite).pathname
Erste. Wenn Sie nach der URL der aktuellen Seite suchen, verwenden Sielocation.pathname
. Dann benutzen.split("/")
auf das Ergebnis..filter(Boolean)
entfernt leere Teile (zB nach abschließenden Schrägstrichen)..at(-1)
(oder.pop()
oder.slice(-1)[0]
) erhält den letzten Teil des Pfads.– Sebastian Simon
15. März um 22:08 Uhr