我有一个文件以错误的格式输出数据。我正在尝试使用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, '$& ')
请参见regex demo。
详细信息
NAME
-子字符串
-空格\d+
-1+个数字(?![ \d])
-不能紧跟空格或其他数字。要处理任何空格,请用模式中的\s
替换文字空间。