javascript - 如何转义对象内的所有双引号
问题描述
我有很多 HTML 标签在我的代码中硬编码为字符串。我想将它们移动到一个单独的模块中,以便我可以将它们用作变量。
当我使用 JSON.parse(HTMLTags) 解析对象时出现错误
JSON中的意外令牌x
我知道那是因为双引号,我知道我可以使用反斜杠转义它们。但这太多了,因为它们有很多标签。还有其他方法吗?
export const HTMLTags = `{
"h1s": {
"greating1": "<h1 id="ms1" class="ms">ABC</h1>",
"greating2": "<h1 id="ms2" class="ms">XYZ</h1>",
.
.
.
.
.
"greatingx": "<h1 id="msX" class="ms">QWE</h1>"
}
}`;
解决方案
问题在于您的属性的引号。源字符串本身无效:
const HTMLTags = `{
"h1s": {
"greating1": "<h1 id='ms1' class='ms'>ABC</h1>",
"greating2": "<h1 id='ms2' class='ms'>XYZ</h1>",
"greatingx": "<h1 id='msX' class='ms'>QWE</h1>"
}
}`;
console.log(JSON.parse(HTMLTags));
您也可以通过正则表达式解析它:
const HTMLTags = `{
"h1s": {
"greating1": "<h1 id="ms1" class="ms">ABC</h1>",
"greating2": "<h1 id="ms2" class="ms">XYZ</h1>",
"greatingx": "<h1 id="msX" class="ms">QWE</h1>"
}
}`;
const replaced = HTMLTags.replace(/(?<==)["']?((?:.(?!["']?\\s+(?:\S+)=|[>"']))+.)["']?/g,
str => str.replace(/"/gi, `'`)
);
console.log(replaced);
console.log(JSON.parse(replaced));
推荐阅读
- json - PLSQL 中的嵌套 JSON 对象
- excel - 动态行选择
- java - Java 8:如何使用流从 Java 8 中的 HashMap 的 ArrayList 中提取 HashMap?
- c - 为什么我使用 MPI_Bcast 和 -O3 编译器标志会收到堆栈粉碎错误,但没有 -O3 一切正常?
- java - Powemock 无法模拟依赖类不存在的类
- pandas - 如何找到两个值之间的唯一值范围并填写
- python - Python,DataFrame 的元素明智排序
- python - 如何从 python 和 BeautifulSoup 中的 html 表中抓取 url
- c# - 在应用程序配置中指定 ssl ca 和密钥 c# mysql 连接字符串
- c# - 这到底是怎么回事