如何插入从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
是我想要的真正价值?
此值将是用户输入,我不想评估它。
答案 0 :(得分:1)
你可以使用正则表达式来解析转义序列并转换为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和十六进制数字解析。