2017-09-22 1 views
0

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? :)

+0

statt drei Schrägstriche versuchen. '\\\ n' –

+0

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

+0

Es gibt keinen Grund, sich um die genaue Flucht in JSON kümmern. –

Antwort

0

Die Antwort wurde von @Crogo gegeben danke!

Also in Ihrem Textbereich Sie brauchen im Grunde

hello how are you 

dann geben Sie dann

very good :) 

für die Zeichenfolge/json Eingabetaste drücken, damit er als „reine“ Zeilenumbruch enthalten. Wenn Sie sonst fortfahren möchten, und geben Sie direkt

hello how are you\nvery good :) 

und nach wie vor, dass es so in Ihre JSON geschrieben haben, müssen Sie das Formular extrahierten Zeichenfolge verwandeln vor dem Speichern:

test = test.replace(/\\n/gm, '\n') 
Verwandte Themen