跳至內容
Astera Technology

文字看似範本符號,也要照原文保留

範本只替換一次,插入後的原文字不再當指令解。

下載完整個案資料及參考答案 ↓

訂判斷及所需輸入

本例備註原文就是 {{total}},範本另有總數二。一次替換應成 Note: {{total}}; Total: 2;再在已插備註內換 total,就把原文字改成 Note: 2。

已填本地測試工作表
情況輸入 JSON
原例測試{"memo":"{{total}}","total":2}
下載可編輯 CSV ↓

跑所附比較

程序是固定字串替換。原文字屬資料,不是再執行範本的許可;例子沒有模型、算式執行器或供應商操作。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"output":"Note: 2; Total: 2"}
所需路徑{"output":"Note: {{total}}; Total: 2"}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
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 照留,零總數仍零。所需總數欠值就停,不猜空白或金額。

  1. 核原範本位置
  2. 一次插入各值
  3. 核欄內原文仍在

所需值欠缺便停,也不把插入文字再當範本執行。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
普通備註原文{"memo":"Ada","total":0}{"output":"Note: Ada; Total: 0"}
所需數值未知{"memo":"A","total":null}{"held":true}
下載可編輯 CSV ↓

原例備註內的 {{total}} 可否改成 2?

查看參考答案

不可以,那是備註原文。只有原範本總數欄變二,備註保留括號字樣。

相關資源