如何插入从DOM中获取的JavaScript字符串值?

假设我将文本区域的值设置为\033[1m\033[0\n\n\033[1;33;42m,如下所示:

var inOne = document.getElementById("textArea").value;
var inTwo = "\033[1m\033[0\n\n\033[1;33;42m";
console.log(JSON.stringify(inOne));
console.log(JSON.stringify(inTwo));


和控制台:

> "\\033[1m\\033[0\\n\\n\\033[1;33;42m"
> "\u001b[1m\u001b[0\n\n\u001b[1;33;42m"


如何实现inOne === inTwo其中inTwo是我想要的真实值?

该值是用户输入的,我不想评估它。

最佳答案

您可以使用regex解析转义序列并将其转换为javascript中的相应字符。
示例代码:

var r = /\\([\d]{3})/gi;//regex to parse octal numbers
var r2 = /\\([a-z])/gi;//regex to parse escape char sequence e.g. \t, \n etc

inOne = inOne.replace(r, (reg,grp)=>{
                             return String.fromCharCode(parseInt(grp,8)); });

inOne = inOne.replace(r2, (reg, grp)=>{
                             return JSON.parse("\"\\"+grp+"\""); });


同样,您可以包含用于处理unicode和十六进制数字解析的代码。

关于javascript - 转义字符的字符串插值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47852503/

10-15 07:21
查看更多