字符串中的字符串不能由换行符char分割

时间:2016-03-29 22:37:52

标签: javascript node.js 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 个答案:

答案 0 :(得分:1)

问题不在于双引号。问题是JSON.stringify转义字符串中的所有特殊字符。因此,结果字符串中的\n基本上不是新字符串字符,而是两个字符“\”和“n”。要实现您想要的目标,请使用str.split('\\n')