繁体   English   中英

如何使用替换空格创建正则表达式并在分号之间添加空格

[英]How to create regex with replace spaces and add spaces between semicolons

如何创建一个正则表达式,用下划线替换空格并在分号之间添加空格?

将整个文本中的空格替换为下划线可以解决:

data.replace(/ /g, "_");

但是如何解决同时使用分号的情况呢? 关键是我有一个文本文件,它用下划线分隔各个文本。 如果它不包含任何数据,它只是在下一个分号中继续:

data;data;;data;;;data

我需要它在每种情况下的分号之间添加一个空格。 问题是分号的数量不规则,我总是需要添加一个空格:

data;data; ;data; ; ;data

文本文件中有超过 10,000 行这样的行。 我的情况有解决方案吗?

 const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const replaceData = data.replace(/ /g, "_"); /* // //This is not a solution for me, as the number of semicolons is not always the same. And I also can't combine this regex into one. // //const replaceData2 = data.replace(/;;/g, "; ;"); */ console.log(replaceData);

结果应该是这样的:

red; ;I_WW2;123; ; ;error;more; ;blue; ; ; ;123;I_love_you

谢谢

您可以调用.replace两次:

 const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; var repl = data.replace(/ +/g, "_").replace(/;(?=;)/g, "$& "); console.log(repl);

但请确保在;之间插入空格之前用_替换空格。 s。

  • .replace(/ +/g, "_") : 用_替换 1+ 个空格
  • .replace(/;(?=;)/g, "$& ") : 在两个相邻分号之间插入空格

如果你想用一个正则表达式来做,可以用一个回调参数来做,但这也会花费执行时间。 就像我在评论中写的那样,坚持 2 次replace调用可能会更好。 只需看看它在您的环境和数据上的表现如何。

以下是它如何与回调一起工作:

 const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const result = data.replace(/ |(?<=;)(?=;)/g, m => " _"[m.length]); console.log(result);

正则表达式在两个分号之间具有零长度匹配,因此当它匹配时, m将是空字符串(在回调中)。 因此可以使用m的大小来区分这两种情况,然后可以使用length来选择替换字符(空格或下划线)。

这将帮助您获得所需的输出。

  1. 积极的向后看 (?<=;)
  2. 正向前瞻 (?=;)

我们将其替换为" " space

 const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const replaceData = data.replace(/(?<=;)(?=;)/g, " "); console.log(replaceData)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM