[英]Replace multiple values in file loop
我正在嘗試為自己構建一個快速且骯臟的靜態站點生成器。
假設我有這個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
語句周圍不使用括號,則會導致細微的錯誤!
你要:
if (typeof obj[property] == "object") {
iterate(obj[property]);
} else {
console.log("replace {" + property + "} with " + obj[property] )
htmldata.replace(/\{property\}/g, obj[property]);
}
否則,無論if
的條件如何, replace
都會每次運行。
第二件事:您的正則表達式嘗試匹配文字字符串"{property}"
。 相反,請嘗試以下操作:
htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);
第三件事:您沒有將replace
結果分配回 htmldata
。 因此,您需要這樣做:
htmldata = htmldata.replace(new RegExp("{" + property + "}", "g"), obj[property]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.