| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- // 测试 {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);
|