[英]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
来选择替换字符(空格或下划线)。
这将帮助您获得所需的输出。
我们将其替换为" "
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.