我必须读取一个.csv文件,并为每个数据条目创建一个多行字符串。每个条目都需要写入一个.xml文件。
每个条目都有一个预定义的格式
这是我到目前为止所拥有的
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
// create a multiline string that's gets written to a .xml file
const xmlEntry = `
sip isdn t:${login} g:Avaya (.*) +${internal} (.*) \1 from_pstn_src_setting=
isdn sip g:Avaya p:${login} (.*) \1 0${convertedInternal} \1
`;
})
.on('end',() => {
// done
});
执行代码时出现错误
SyntaxError:严格模式下不允许八进制转义序列。
我该如何解决?
然后,必需的多行字符串格式很重要。
答案 0 :(得分:1)
您可以改用String.raw
,它将完全按照类型解释字符串(加上插值变量):
const xmlEntry = String.raw`
sip isdn t:${login} g:Avaya (.*) +${internal} (.*) \1 from_pstn_src_setting=
isdn sip g:Avaya p:${login} (.*) \1 0${convertedInternal} \1
`;
或者,当然,请两次转义反斜杠,这样它们就不会被解释为八进制转义符:
const xmlEntry = `
sip isdn t:${login} g:Avaya (.*) +${internal} (.*) \\1 from_pstn_src_setting=
isdn sip g:Avaya p:${login} (.*) \\1 0${convertedInternal} \\1
`;