javascript - 转义字符的字符串插值

标签 javascript

如何插入从 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 是我想要的真实值?

这个值将是用户输入,我不想评估它。

最佳答案

您可以使用正则表达式解析转义序列并转换为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/

相关文章:

javascript - 在加载页面时打开一个新窗口的问题

javascript - 未捕获的 TypeError 无法设置 null 的属性 'src'

c# - 如何在 selenium 中获取表行 ID

javascript - HTML 选择字段更新另一个字段

javascript - 无法附加多个视频

javascript - 关闭 Accordion 菜单中的所有项目

javascript - 需要对 JavaScript 类(class)进行一些说明。 (构造函数)

javascript - Chartjs 时间图 xAxis 显示 1970 年

javascript - Angular 范围未更新为出厂值

javascript - Bluebird promise 与 Swagger : return is not a function