【问题标题】:How can I add a space to an array using regex如何使用正则表达式向数组添加空格
【发布时间】: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


【解决方案1】:

您可以直接在数据上使用.replace

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

请参阅regex demo

详情

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

字符串替换模式中的$&指的是整个匹配值。

要处理任何空格,请将模式中的文字空格替换为 \s

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 2012-12-10
    • 2023-03-11
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多