私はnode.jsを有効にしたウェブサイトを持っています。fs.writeFile nのようなものでエスケープを無効にする方法
ユーザーはフォームからキーを入力し、スクリプトでこのような文字列を取得します。
hello how are you\nvery good :)
HTMLはこの
<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>
のように見えるその後、私はにconsole.logを作る:it'sは秘密鍵
からコピーして貼り付けているため、ユーザはその一例として、\ nを入力します入力によって生成され、上のような同じ出力です。 @Crogoは、このログで\ nを見たので既に脱出されていることを以下にコメントしました!つまりこれはJSONファイルでのように見える必要があります方法です。
hello how are you\nvery good :)
しかし、私はこの文字列をJSONファイルのいくつかの要素を交換したいと私は私のファイルを書き込むために、これを使用しています。
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')
}
});
すべてが機能し、ファイルが編集されて保存されます。 しかし、私の認証キーが今であることをので、それは問題がある。この
'hello how are you\\nvery good :)'
のように見えるファイルで\ nはdoesn't新しい行を作成したり... エスケープされることを私のために非常に重要it's二重のバックスラッシュのためにもう働かない。
'hello how are you\nvery good :)'
オプション値としてFSとエスケープを無効にする方法はありますか、別の方法を知っていますか:それはJSONでこのように見なければなりませんか? :)
代わりに3つのバックスラッシュを試してみてください。 '\\\ n' –
テスト文字列は、ユーザが設定するフォームによって生成されるので、スクリプトと置き換える必要がありますが、これは私のためには機能しません。 test = test.replace(/ [\\]/gmi、 '\')は\\ をエスケープしないために使用できませんOR test = test.replace(/ [\\]/gmi、 '\\')は再び\になりますOR test = test.replace(/ [\\]/gmi、 '\\\\')は動作しません。\\\\ 文字列テストの正規表現で置き換えるにはどうすればよいですか?また、私は文字列テストがデフォルトで正しいと思うfs.writeFileは\ nをエスケープします – t33n
JSONで使用されている正確なエスケープを気にする理由はありません。 –