我如何使用正则表达式向数组添加空间

问题描述 投票:0回答:1

我有一个文件以错误的格式输出数据。我正在尝试使用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);

});
javascript arrays regex splice
1个回答
1
投票

您可以使用

data.replace(/NAME \d+(?![ \d])/g, '$& ')

请参见regex demo

详细信息

  • [NAME-子字符串
  • -空格
  • \d+-1+个数字
  • [(?![ \d])-不能紧跟空格或其他数字。

要处理任何空格,请用模式中的\s替换文字空间。

© www.soinside.com 2019 - 2024. All rights reserved.