如何在Node.js中提取字符串/文档中大括号内的变量用于doctemplater填充
提取大括号包裹变量的实现方案
你可以根据自己的使用场景选择以下两种实现方式:
通用正则匹配方案
不依赖doctemplater的原生JS实现,适合纯文本的变量提取场景:
const mystring = "I am a {job} and my name is {name}. my age is {age} years old"; // 全局匹配{xxx}格式的占位符,捕获大括号内的内容 const variableRegex = /{([^}]+)}/g; const result = []; let matchItem; while ((matchItem = variableRegex.exec(mystring)) !== null) { result.push(matchItem[1]); } // 输出结果:['job', 'name', 'age'] console.log(result);
注意:该方案仅适配无嵌套大括号的场景,完全符合doctemplater默认的模板语法规则
Doctemplater原生API方案
你正在使用的doctemplater本身提供了直接提取模板变量的API,比自己手写正则覆盖的场景更全,可以兼容循环、条件判断等特殊模板语法里的变量:
const fs = require('fs'); const PizZip = require('pizzip'); const Docxtemplater = require('docxtemplater'); // 加载docx模板文件 const templateContent = fs.readFileSync('你的模板文件路径.docx', 'binary'); const zip = new PizZip(templateContent); const doc = new Docxtemplater(zip); // 直接调用getTags方法获取所有需要填充的变量 const variables = doc.getTags(); console.log(variables);
注意:该方法会自动过滤语法标签,仅返回需要填充的变量值,是当前场景的最优选择
内容的提问来源于stack exchange,提问作者theboyonfire
相关产品推荐
相关产品推荐

