これはあなたの提案された解決策の一つである:
function magicStringFunction(w){
return JSON.parse('"' + w + '"');
}
しかし、これが起こるとき、それは失敗します。
magicStringFunction('"\\n"'); // whoops
起きてからこれを防ぐバージョン:
function magicStringFunction(w){
return w.replace(/\\./g, function(match){
return JSON.parse('"' + match + '"');
});
}
非常に効率的ではないかもしれませんが、機能します。
それとも、効率のためにJSON.parseの大ファンでない場合は、代わりにこれを行うことができます。
function magicStringFunction(w){
// Defined by Table 34 under section 11.8.4.3
// ' " \ b f n r t v
var escCharMap = {
"\\'": "'",
"\\\"": "\"",
"\\\\": "\\",
"\\b": "\b",
"\\f": "\f",
"\\n": "\n",
"\\r": "\r",
"\\t": "\t",
"\\v": "\v"
};
return w.replace(/\\./g, function(match){
if(escCharMap.hasOwnProperty(match)) return escCharMap[match];
else return match.substr(1, 1);
});
}
参考:http://www.ecma-international.org/ecma-262/7.0/index.html#prod-SingleEscapeCharacter
ああ、私はあなたが話していたと思いましたオートマトン理論やコンパイラ設計のように、Javascriptの構文分析を開発する。 –
終了しますが、二重引用符 '' 'が渡されたときにあなたの解答が破られます。 –
' '\\ v" 'を解析しようとするとうまくいかないようです。これは "r"、 "n"、 "t"、 "v"、 "f"、 "b"のために働きたいと思っています。 ':JSON.parse(' "\\ '+ char +'" ') ' – jchitel