訂判斷及所需輸入
本例備註原文就是 {{total}},範本另有總數二。一次替換應成 Note: {{total}}; Total: 2;再在已插備註內換 total,就把原文字改成 Note: 2。
| 情況 | 輸入 JSON |
|---|---|
| 原例測試 | {"memo":"{{total}}","total":2} |
跑所附比較
程序是固定字串替換。原文字屬資料,不是再執行範本的許可;例子沒有模型、算式執行器或供應商操作。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"output":"Note: 2; Total: 2"} |
| 所需路徑 | {"output":"Note: {{total}}; Total: 2"} |
import assert from 'node:assert/strict';
const run=function run(i,corrected=true){
if(typeof i.memo!=='string'||i.total===null)return {held:true};
const source='Note: {{memo}}; Total: {{total}}';
const output=corrected?source.replace(/\{\{(memo|total)\}\}/g,(_,key)=>String(i[key])):source.replace('{{memo}}',i.memo).replace(/\{\{total\}\}/g,String(i.total));
return {output};
};
const cases=[{"input":{"memo":"{{total}}","total":2},"corrected":false,"expected":{"output":"Note: 2; Total: 2"}},{"input":{"memo":"{{total}}","total":2},"corrected":true,"expected":{"output":"Note: {{total}}; Total: 2"}},{"input":{"memo":"Ada","total":0},"corrected":true,"expected":{"output":"Note: Ada; Total: 0"}},{"input":{"memo":"A","total":null},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
按邊界依據作判斷
普通 Ada 照留,零總數仍零。所需總數欠值就停,不猜空白或金額。
- 核原範本位置
- 一次插入各值
- 核欄內原文仍在
所需值欠缺便停,也不把插入文字再當範本執行。
| 條件 | 輸入 JSON | 預期輸出 JSON |
|---|---|---|
| 普通備註原文 | {"memo":"Ada","total":0} | {"output":"Note: Ada; Total: 0"} |
| 所需數值未知 | {"memo":"A","total":null} | {"held":true} |
原例備註內的 {{total}} 可否改成 2?
查看參考答案
不可以,那是備註原文。只有原範本總數欄變二,備註保留括號字樣。