507 Stimmen

Wie schneidet man eine Dateierweiterung aus einem String in JavaScript ab?

Zum Beispiel, wenn man annimmt, dass x = filename.jpg Ich möchte eine filename , donde filename kann ein beliebiger Dateiname sein (nehmen wir zur Vereinfachung an, dass der Dateiname nur [a-zA-Z0-9-_] enthält).

Ich sah x.substring(0, x.indexOf('.jpg')) en DZone Schnipsel würde aber nicht x.substring(0, x.length-4) besser abschneiden? Darum, length ist eine Eigenschaft und führt keine Zeichenprüfung durch, während indexOf() ist eine Funktion und führt eine Zeichenprüfung durch.

5voto

Node.js-Erweiterung aus vollständigem Pfad entfernen und Verzeichnis beibehalten

https://stackoverflow.com/a/31615711/895245 hat zum Beispiel path/hello.html -> hello aber wenn Sie wollen path/hello.html -> path/hello können Sie dies verwenden:

#!/usr/bin/env node
const path = require('path');
const filename = 'path/hello.html';
const filename_parsed = path.parse(filename);
console.log(path.join(filename_parsed.dir, filename_parsed.name));

auch das Verzeichnis der Ausgaben:

path/hello

https://stackoverflow.com/a/36099196/895245 erreicht dies ebenfalls, aber ich finde diesen Ansatz semantisch etwas ansprechender.

Getestet in Node.js v10.15.2.

4voto

Munim Punkte 2446

Obwohl es ziemlich spät ist, werde ich einen anderen Ansatz hinzufügen, um den Dateinamen ohne Erweiterung mit einfachen alten JS- erhalten

path.replace(path.substr(path.lastIndexOf('.')), '')

1voto

Aaron Cool Punkte 1

Es kann vorkommen, dass wir auf Dateinamen oder Dateipfade mit mehreren Endungen stoßen. Um sie zu kürzen, können Sie folgendes tun.

text = "/dir/path/filename.tar.gz"    
output = text.replace(/(\.\w+)+$/,"")

Ergebnis der Ausgabe: "/dir/path/filename"

Es löst das Problem der Dateierweiterung, insbesondere wenn die Eingabe mehrere Erweiterungen hat.

0voto

Little Brain Punkte 2198

Dies ist der Code, den ich verwende, um die Erweiterung aus einem Dateinamen zu entfernen, ohne entweder regex oder indexOf zu verwenden (indexOf wird im IE8 nicht unterstützt). Er geht davon aus, dass die Erweiterung ein beliebiger Text nach dem letzten '.' Zeichen ist.

Es funktioniert für:

  • Dateien ohne Erweiterung: "myletter"
  • Dateien mit "." im Namen: "mein.brief.txt"
  • unbekannte Länge der Dateierweiterung: "mein.brief.html"

Hier ist der Code:

var filename = "my.letter.txt" // some filename

var substrings = filename.split('.'); // split the string at '.'
if (substrings.length == 1)
{
  return filename; // there was no file extension, file was something like 'myfile'
}
else
{
  var ext = substrings.pop(); // remove the last element
  var name = substrings.join(""); // rejoin the remaining elements without separator
  name = ([name, ext]).join("."); // readd the extension
  return name;
}

0voto

Alex Punkte 61397

Hier kommen die regulären Ausdrücke ins Spiel! Javascript's .replace() Methode nimmt einen regulären Ausdruck entgegen, den Sie verwenden können, um das zu erreichen, was Sie wollen:

// assuming var x = filename.jpg or some extension
x = x.replace(/(.*)\.[^.]+$/, "$1");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X