【发布时间】:2020-02-28 10:59:10
【问题描述】:
我有一个文件以不正确的格式输出数据。我正在尝试使用 Javascript 来更正文件的格式。为了使它起作用,我需要做的就是在数字和 A 之间添加一个空格。
问题是我不知道这些数字是多少。
文件的示例输出如下:
NAME 12345A JAMES
NAME 12345A JAMES
NAME 12345A JAMES
NAME 12345A JAMES
想要的输出:
NAME 12345 A JAMES
NAME 12345 A JAMES
NAME 12345 A JAMES
NAME 12345 A JAMES
我不能将indexOf() 与正则表达式一起使用,因此我尝试先将数据转换为字符串,然后再转换为数组。我已经能够match 每次出现正则表达式,但是当我尝试在我的空间中使用splice 时它不起作用。它似乎不喜欢使用match.index 作为索引。谁能看出我哪里出错了?
const fs = require('fs');
fs.readFile('fileName.txt', (err, data) => {
let regEx = /NAME \d\d\d\d\d/g;
let convertToArray = data.toString().split(" ");
console.log(convertToArray);
while ((match = regEx.exec(convertToArray)) != null) {
console.log(match.index);
};
let addSpace = convertToArray.splice(match.index, 0, ' ');
console.log(addSpace);
});
【问题讨论】:
-
为什么不只是
data.replace(/NAME \d+(?![ \d])/g, '$& ')- regex101.com/r/XGA16H/1? -
@WiktorStribiżew 为什么负面展望?在这里似乎没有用
-
@MuratKaragöz 如果已经有空间怎么办?我想那时不应该添加空格。我们对实际需求的信息太少,所以建议很笼统。
-
@WiktorStribiżew 没错。你的答案是正确的,所以把它作为一个发布?
-
@WiktorStribiżew Brilliant,已经解决了,谢谢。看来我需要更多地学习正则表达式!
标签: javascript arrays regex splice