簡體   English   中英

在文件循環中替換多個值

[英]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}

這樣您就可以看到問題所在。 我認為它總是將輸入文件替換為已編輯文件,因此看不到任何更改。 我想不通,如果有人能指出正確的方向,我將不勝感激。

謝謝!

ifif語句周圍不使用括號,則會導致細微的錯誤!

你要:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM