2016-03-29 11 views
0

によって分割することができない私は本当に知らない -Stringこのような場合は、なぜ改行文字

次のような文字列リテラルは""double-encoded""次のとおりです。

" => Suman => fatal error in suite with path=\"/Users/amills001c/WebstormProjects/oresoftware/suman/test/build-tests/test6.js\"\n (note: You will need to transpile your test files if you wish to use ES7 features)" => error => "SyntaxError: Unexpected reserved word\n at exports.runInThisContext (vm.js:53:16)\n at Module._compile (module.js:373:25)\n at Object.Module._extensions..js (module.js:416:10)\n at Module.load (module.js:343:32)\n at Function.Module._load (module.js:300:12)\n at Module.require (module.js:353:17)\n at require (internal/module.js:12:17)\n at Domain.<anonymous> (/Users/amills001c/WebstormProjects/oresoftware/suman/lib/run-child.js:33:5)\n at Domain.run (domain.js:228:14)\n at Object.<anonymous> (/Users/amills001c/WebstormProjects/oresoftware/suman/lib/run-child.js:32:3)" 

それはだ理由それはのように作成されたため、二重エンコードは次のとおりです。

var str = "foo" + JSON.stringify(bar) + "baz"; 

は、私はその後、String(str).split('\n')と結果の文字列を分割することはできません理由は正当な理由があるのですか?場合によると思われますが、なぜそれが好奇心かというだけです。

答えて

1

問題は二重引用符ではありません。問題は、JSON.stringifyが文字列内のすべての特殊文字をエスケープすることです。したがって、基本的に結果の文字列内の\nは新しい文字列ではなく、2つの文字 "\"と "n"です。あなたが望むものを達成するためにstr.split('\\n')

+0

ありがとう –

関連する問題