javascript - 在多行字符串上使用八进制字符
问题描述
我必须读取一个 .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:在严格模式下不允许八进制转义序列。
我该如何解决?
那么所需的多行字符串格式很重要。
解决方案
您可以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
`;
推荐阅读
- kotlin - 如何模拟调用 kotlin.system.exitProcess
- reactjs - 强制 React 在一些视觉上重要的状态变化上快速重新渲染
- javascript - React - 无法设置状态值
- php - 如何添加分页codeigniter
- reactjs - 为什么 mapStateToProps 会重新渲染,也就是说在 Component 中调用 render()
- android - Android Studio CMake 为所有构建变体构建一次
- javascript - 未实现页面之间的Angular 7数据更新
- javascript - 是否可以将具有 2 个以上字段的对象返回到 Redux 中的操作?
- oracle - 无法减去 oracle 形式的变量值
- oracle-data-integrator - CDC ODI - 为什么 odi 需要两个视图 JV$ 和 JV$D