我正在嘗試進行此測驗,但我無法獲得正確的正則運算式:
test.only("Should replace text in brackets by variables in data", () => {
let text: string = "This is some [name] in a [entryDate]";
const _data: RequestData = [{ name: "Test" }, { entryDate: "12/12/2022" }];
_data.forEach((param) => {
const key = Object.keys(param)[0];
const pattern = new RegExp(/[\[\]'] /g);
console.log(pattern);
text = text.replace(pattern, param[key]);
});
expect(text).toContain("This is some Test in a 12/12/2022");
});
這有點不言自明,但我需要那個
"This is some [name] in a [entryDate]"
成為
"This is some Test in a 12/12/2022"
目前,我對上述正則運算式的最佳嘗試是:
Expected substring: "This is some Test in a 12/12/2022"
Received string: "This is some TestnameTest in a TestentryDateTest"
謝謝!
uj5u.com熱心網友回復:
首先將資料轉換為單個純物件,然后迭代字串中的占位符:
let text = "This is some [name] in a [entryDate]";
const _data = [{name: "Test"}, {entryDate: "12/12/2022"}];
const dict = Object.fromEntries(_data.flatMap(Object.entries));
text = text.replace(/\[(.*?)\]/g, (match, key) => dict[key] ?? match);
console.log(text);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494663.html
標籤:javascript 正则表达式 开玩笑的
上一篇:在MomentJs中執行減法
下一篇:JavaScript:我怎樣才能執行類似“thrownewError()”之類的操作,但又不將其記錄在控制臺中并停止整個運行檔案?
