Es besteht keine Notwendigkeit, Backslashes besonders zu behandeln; die meisten Antworten behandeln keine Suchparameter.
Der moderne Ansatz besteht darin, einfach die URL
API und erhalten die pathname
Eigentum. Die API normalisiert Backslashes zu Schrägstrichen.
Um das Ergebnis zu analysieren %20
in ein Leerzeichen umzuwandeln, übergeben Sie es einfach an decodeURIComponent
.
const getFileName = (fileName) => new URL(fileName).pathname.split("/").pop();
// URLs need to have the scheme portion, e.g. `file://` or `https://`.
console.log(getFileName("file://C:\\Documents and Settings\\img\\recycled log.jpg")); // "recycled%20log.jpg"
console.log(decodeURIComponent(getFileName("file://C:\\Documents and Settings\\img\\recycled log.jpg"))); // "recycled log.jpg"
console.log(getFileName("https://example.com:443/path/to/file.png?size=480")); // "file.png"
.as-console-wrapper { max-height: 100% !important; top: 0; }
Hinzufügen einer .filter(Boolean)
vor dem .pop()
wenn Sie immer das Letzte wollen nicht leere Teil des Pfades (z.B. file.png
von https://example.com/file.png/
).
Wenn Sie nur eine relative URL haben, aber trotzdem nur den Dateinamen erhalten wollen, verwenden Sie die zweites Argument der URL
Konstrukteur um einen Basisursprung zu übergeben. "https://example.com"
reicht aus: new URL(fileName, "https://example.com")
. Es ist auch möglich, voranzustellen "https://"
zu Ihrem fileName
-die URL
Der Konstruktor akzeptiert https://path/to/file.ext
als eine gültige URL.