2017-10-24 1 views
0

Ich schreibe eine NodeJS Anwendung mit Express und Google Datastore. Ich versuche, den Dateinamen von einem UNIX-Pfad abzurufen. Der Pfad wird in einem HTML-codierten Format in der Datenbank gespeichert.Den Dateinamen aus dem HTML Encoded UNIX Pfad entfernen

Hier ist der Weg unverschlüsselten:

/toplevel/example/text123.txt 

Hier ist, wie der Pfad in der Datenbank HTML codierten Format gespeichert ist:

/toplevel/example/test123.txt 

Da der Pfad HTML codiert, wird diese Zeile nicht funktioniert .

let filename_only = requested_filepath_unescaped.split('/').pop().toString(); 

Ich habe auch versucht, durch die codierten Zeichen Splitting aber das nicht funktioniert entweder (vielleicht, weil Split mit mehreren Charakteren funktioniert nicht?)

let filename_only = requested_filepath_unescaped.split('&#x2F').pop().toString(); 

Was ist der beste Weg, entweder zu spalten die Zeichenfolge, wie sie ist, oder de-Code die HTML zurück in eine unverschlüsselte Zeichenfolge?

Antwort

1

Nun, Split funktioniert mit mehreren Zeichen, so weiß ich nicht, was schief geht, wenn Sie es versuchten.

Allerdings, wenn Sie jQuery verwenden können, können Sie auch die html wie folgt entschlüsseln:

var htmlDecoded = $('<div />').html(htmlEncoded).text() 

Danach können Sie auf ‚/‘ aufspalten.

(Der Code, den ich erstellt im Speicher einen div-Tag gab (es auf das DOM nicht hinzugefügt wird, die Web-Seite), nach, dass es den HTML-Code setzt, die die HTML-Entities automatisch dekodiert.

EDIT : Da ich nicht sicher bin, was das Problem des OP ist und ich kann wegen des niedrigen Rufs nicht kommentieren, gebe ich noch einige Vorschläge hier

Vielleicht ist die Variable, die Sie aufteilen, nicht wirklich ein Zeichenfolgenobjekt Umwandlung in Zeichenfolge zuerst:

var filename = filepath.toString().split('&#x2F;'); 

Andere Option ist Regex zu verwenden, aber ich weiß nicht, was genau das löst, aber es könnte einen Versuch wert sein.

var filename = filepath.toString().split(/&#2F;/); 

EDIT2: Getestet und funktioniert in Chrome v62 und Node v6.11.4.

+0

Hmm interessant Ich frage mich, warum es nicht funktioniert, wenn ich es wie diese Split ('& # x2F') versuche. Ich werde diese Option weiter untersuchen. Außerdem hätte ich klarstellen sollen, dass ich NodeJS im Backend verwende, so dass JQuery in diesem Szenario nicht relevant ist. Vielen Dank! – pengz

+0

Die Umwandlung in eine Zeichenfolge funktionierte zuerst, danke, dass Sie mich in die richtige Richtung weisen! – pengz

Verwandte Themen