You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

处理CSV转XML多行字符串时,如何修复严格模式八进制转义错误?

修复严格模式下的Octal escape sequences错误

错误原因

你碰到的SyntaxError: Octal escape sequences are not allowed in strict mode,根源很直接:模板字符串里的\1被JavaScript当成了八进制转义字符(对应ASCII码为1的控制字符),而严格模式下明确禁止这类八进制转义写法。但你这里的\1是正则表达式里的反向引用,本来应该作为字符串内容保留下来,而不是被JS提前解析成特殊字符。

修复方案

只需要把模板字符串里的单个反斜杠\改成双反斜杠\\就行。这样JS会把\\1解析成字符串里的\1,既完美保留了你需要的正则反向引用格式,又不会触发严格模式的错误,同时还能维持你要求的多行字符串结构。

修改后的完整代码

const fs = require('fs');
const csv = require('fast-csv');
const { csvPath, delimiter } = require('./config.json');

fs.createReadStream(csvPath)
 .pipe(csv({ delimiter }))
 .on('data', data => {
  const login = data[0];
  const firstname = data[1];
  const lastname = data[2];
  const internal = data[3];
  // 49....
  const convertedInternal = internal.slice(2); // remove the 49 from the phonenumber
  // 修复转义问题,保留多行字符串格式
  const xmlEntry = `
   sip isdn t:${login} g:Avaya (.*) +${internal} (.*) \\1
   from_pstn_src_setting=
   isdn sip g:Avaya p:${login} (.*) \\1 0${convertedInternal} \\1
  `;
  // 补充写入XML文件的逻辑,原代码未包含这一步
  fs.appendFileSync('output.xml', xmlEntry.trim() + '\n');
 })
 .on('end',() => {
  console.log('CSV处理完成,XML文件已生成');
 });

额外提示

我在代码里补充了写入XML文件的逻辑(用fs.appendFileSync),原代码只生成了xmlEntry但没有实际写入操作,你可以根据数据量大小调整写入方式——如果数据很多,建议用流式写入来避免内存占用过高。

内容的提问来源于stack exchange,提问作者user9945420

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:04:10