gpt4 book ai didi

javascript - 替换文件循环中的多个值

转载 作者:行者123 更新时间:2023-11-28 20:11:18 24 4
gpt4 key购买 nike

我正在尝试为自己构建一个快速但肮脏的静态站点生成器。

假设我有这个 test.html 文件:

{title}
{downloadpath}

这是我的 current.json,我在其中获取要替换的值:

{
"id": 123,
"album" : [{
"title": "Test EP",
"albumid": 1234,
"path": "test.zip"
}]
}

我的替换函数如下所示:

    // Iterate through JSON object and replace
function iterate(obj) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object")
iterate(obj[property]);
else
console.log("replace {" + property + "} with " + obj[property] )
htmldata.replace(/\{property\}/g, obj[property]);
}
}
}
iterate(json)
var result = htmldata

console.log(result)

// Write new HTML
fs.writeFile("test-" + json.id + ".html", result, 'utf8', function (err) {
if (err) {
return console.log(err);
}
});

如果我运行它,它的工作原理如下:

replace {id} with 123
replace {title} with Test EP
replace {albumid} with 1234
replace {path} with test.zip
{title}
{path}

你就可以看到问题所在。我认为它总是用输入文件替换编辑的文件,所以我看不到任何更改。我无法弄清楚,如果有人能指出我正确的方向,我将不胜感激。

谢谢!

最佳答案

if 语句周围不使用大括号会导致微妙的错误!

你想要:

if (typeof obj[property] == "object") {
iterate(obj[property]);
} else {
console.log("replace {" + property + "} with " + obj[property] )
htmldata.replace(/\{property\}/g, obj[property]);
}

否则,replace每次运行,无论 if 的条件如何。

第二件事:您的正则表达式尝试匹配文字字符串“{property}”。相反,试试这个:

htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);

第三件事:您没有将 replace back 的结果分配给 htmldata。所以你需要这样做:

htmldata = htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);

关于javascript - 替换文件循环中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867415/

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