// 测试 {remark} 替换问题 console.log('=== 测试 {remark} 替换问题 ===\n'); // 模拟打印模板 const template1 = `订单号: {orderNo} 时间: {orderTime} 商品: {goodsList} 合计: {payAmount} 备注: {remark} 收货人姓名: {receiverName} 地址: {address} 联系电话: {receiverPhone}`; const template2 = `订单号: {orderNo} 时间: {orderTime} 商品: {goodsList} 合计: {payAmount} 备注: { remark } // 有空格 收货人姓名: {receiverName} 地址: {address} 联系电话: {receiverPhone}`; const template3 = `订单号: {orderNo} 时间: {orderTime} 商品: {goodsList} 合计: {payAmount} 备注: {{remark}} // 双大括号 收货人姓名: {receiverName} 地址: {address} 联系电话: {receiverPhone}`; // 模拟变量 const variables = { orderNo: 'ORD20251210112844577127', orderTime: '2025-12-10 19:28:44', goodsList: '洗护产品6 × 1 = ¥0.01', payAmount: '¥0.01', remark: '测试备注内容', receiverName: '1', address: '1', receiverPhone: '13100000000' }; // 测试不同的替换方法 function testReplaceMethod(name, template, variables) { console.log(`\n=== 测试方法: ${name} ===`); console.log('原始模板:'); console.log(template); let content = template; // 方法1: 当前代码中的方法 if (name === '当前代码方法') { for (const [key, value] of Object.entries(variables)) { const placeholder = `{${key}}`; if (content.includes(placeholder)) { content = content.split(placeholder).join(value); } } } // 方法2: 正则表达式替换 if (name === '正则表达式方法') { for (const [key, value] of Object.entries(variables)) { const regex = new RegExp(`\\{${key}\\}`, 'g'); content = content.replace(regex, value); } } // 方法3: 处理有空格的情况 if (name === '处理空格方法') { for (const [key, value] of Object.entries(variables)) { // 处理 {key} 和 { key } 两种情况 const regex1 = new RegExp(`\\{${key}\\}`, 'g'); const regex2 = new RegExp(`\\{\\s*${key}\\s*\\}`, 'g'); content = content.replace(regex1, value).replace(regex2, value); } } console.log('\n替换后内容:'); console.log(content); // 检查是否还有未替换的 {remark} if (content.includes('{remark}') || content.includes('{ remark }') || content.includes('{{remark}}')) { console.log('❌ 仍有未替换的 remark 占位符'); } else { console.log('✅ 所有 remark 占位符已替换'); } } // 运行测试 testReplaceMethod('当前代码方法', template1, variables); testReplaceMethod('正则表达式方法', template2, variables); testReplaceMethod('处理空格方法', template3, variables); // 测试空备注情况 console.log('\n\n=== 测试空备注情况 ==='); const emptyRemarkVariables = { ...variables, remark: null }; const emptyRemarkVariables2 = { ...variables, remark: '' }; console.log('1. remark = null:'); let content1 = template1; for (const [key, value] of Object.entries(emptyRemarkVariables)) { const placeholder = `{${key}}`; if (content1.includes(placeholder)) { const replaceValue = value || '无备注'; content1 = content1.split(placeholder).join(replaceValue); } } console.log(content1); console.log('\n2. remark = "":'); let content2 = template1; for (const [key, value] of Object.entries(emptyRemarkVariables2)) { const placeholder = `{${key}}`; if (content2.includes(placeholder)) { const replaceValue = value || '无备注'; content2 = content2.split(placeholder).join(replaceValue); } } console.log(content2);