Ich habe eine Website mit node.js aktiviert.fs.writeFile So deaktivieren Sie das Entkommen bei Sachen wie n
Benutzer wird einen Schlüssel per Formular eingeben und dann im Skript erhalten wir eine Zeichenfolge wie folgt. Der Benutzer wird \ n eingeben weil sein Kopieren und Einfügen von einem privaten Schlüssel
so wie zB:
hello how are you\nvery good :)
HTML sieht aus wie diese
<form id="FORM_Key">
<button id="send_Key">Save</button>
<label for="Textarea_Key">
<input type="text" id="Textarea_Key" class="dropdown_textarea" name="Textarea_Key" placeholder="Enter Private Key.." onclick="addHandler_Key();">
</label>
</form>
Dann mache ich eine console.log dieser Zeichenfolge, die von der Eingabe generiert wird, und es ist die gleiche Ausgabe wie oben. @Crogo kommentierte unten, dass es bereits entgangen ist, weil ich \ n in diesem Protokoll gesehen habe! Mit anderen Worten: das ist, wie es in der JSON-Datei aussehen muss:
hello how are you\nvery good :)
Aber dann will ich mit dieser Zeichenfolge einige Elemente einer JSON-Datei ersetzen, und ich benutze diese meine Datei zu schreiben.
var test = $('#Textarea_Key').val()
var json_configFile = require('C:/user/default.json', 'utf8')
json_configFile['AppSettings'].appAuth.Key = test
var gangwithme = JSON.stringify(json_configFile, null, 4)
var options = { flag : 'w' };
fs.writeFile('C:/user/default.json', gangwithme, options, function (err) {
if (err) {
console.log('Error: ' + err)
}
else {
console.log('SUCCESS')
}
});
Alles funktioniert und die Datei wird bearbeitet und gespeichert. Aber es ist für mich sehr wichtig, dass \ n Passt nicht auf eine neue Zeile erstellen oder wird .. Da in der Datei entwertet werden sie wie diese
'hello how are you\\nvery good :)'
Das Problem, dass mein Auth Schlüssel jetzt aussieht, ist funktioniert nicht mehr wegen doppeltem Backslash. Es muss in der JSON wie folgt aussehen:
'hello how are you\nvery good :)'
Gibt es eine Möglichkeit mit fs als Optionswert zu deaktivieren entkommen, oder wissen Sie einen anderen Weg? :)
statt drei Schrägstriche versuchen. '\\\ n' –
Die Testzeichenfolge wird von einem Formular erzeugt, das vom Benutzer gesetzt wird, also muss ich es durch das Skript ersetzen, aber das funktioniert nicht für mich test = test.replace (/ [\\]/gmi, '\') kann nicht verwendet werden, weil kein '\' OR ausgegeben wird test = test.replace (/ [\\]/gmi, '\\') wird erneut \\ n ODER test = test.replace (/ [\\]/gmi, '\\\\') funktioniert nicht Ergebnis \\\\ Wie kann ich es durch eine Regex vom Stringtest ersetzen? Auch ich denke, der Stringtest ist im Standard korrekt nur fs.writeFile wird die \ n entkommen – t33n
Es gibt keinen Grund, sich um die genaue Flucht in JSON kümmern. –