簡體   English   中英

評估Java中的轉義字符串文字

[英]Evaluating escaped string literals in Javascript

考慮以下代碼片段:

var a = '\\555';
var b = '\555';
console.log(a, b); // outputs \555 -5

因此, a的值具有轉義的反斜杠, b已轉義的55(與“減號”或“破折號”的Unicode代碼點八進制等效的八進制等效項),並且尾隨的5串聯到-得到-5

現在我想以“評估/解碼”的價值的最好方式a以這樣一種方式,它等於值b 任何幫助,將不勝感激。

eval可以做到這一點(假設它是一個有效的字符串,並且不包含其他轉義符和引號):

var a = '\\555';
console.log(eval('"' + a '"'));

但確實,明確的解碼功能是一個更好的主意:

function decodeOctEscapes(x) {
    return x.replace(/\\([0-7]{2})/g, (_, v) => String.fromCharCode(parseInt(v, 8)));
}

除了Regex以外,還有其他方法,但都不是理想的方法:

var a1 = '\\555';
// unsafe: only for trusted values
var a2 = eval('"' + a1 + '"');

var b1 = '\555';
// ES6 raw string; cannot be created on runtime
var b2 = String.raw`\555`;

console.log(a1===b2) // true
console.log(a2===b1) // true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM