gpt4 book ai didi

javascript - 如何格式化字符串以修复 Javascript 中的缩进?

转载 作者:行者123 更新时间:2023-12-03 10:30:54 25 4
gpt4 key购买 nike

我正在解析一个文件以制作一些文档。

我返回的字符串是:

"([ {
href: "sass.html",
text: "Sass"
}, {
href: "components.html",
text: "Components"
}, {
href: "javascript.html",
text: "Javascript"
} ])
"

我想美化它,以便我可以将其输出到预标记中。所以理想的输出应该是这样的:

"(
[
{
href: "sass.html",
text: "Sass"
},
{
href: "components.html",
text: "Components"
},
{
href: "javascript.html",
text: "Javascript"
}
]
)"

我目前认为我可以通过以下方式删除字符串中的所有空格:

string.replace(/\s/g,'')

然后进行一堆分割以将每行分开并添加缩进间距并重新连接,但这对我来说感觉很困惑。有更好的方法吗?

当然非常感谢任何建议。

这不同于:How can I beautify JSON programmatically?因为我正在处理无效 JSON 上的字符串。

最佳答案

困难在于你的格式很奇怪,它不是有效的 JSON,所以你不能直接使用 JSON.parse()

由于以下两个原因,它不是有效的 JSON:

  1. 出于某种原因,它被 () 包围。
  2. 键没有用双引号引起来。

因此,理想情况下您需要做的就是先将字符串转换为有效的 JSON,然后尝试解析它。

如果您确信相信这些数据,一个捷径就是先去掉括号,然后使用备受诟病的eval(),因为它将绕过键未加引号的事实。

下面是一行代码(假设字符串位于名为 s 的变量中):

JSON.stringify(eval(s.substring(s.indexOf('(') + 1, s.lastIndexOf(')'))), null, "\t")

或者将其拆分一下:

var pseudoJson = s.substring(s.indexOf('(') + 1, s.lastIndexOf(')'));
JSON.stringify(eval(pseudoJson), null, "\t");

关于javascript - 如何格式化字符串以修复 Javascript 中的缩进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29221895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com