繁体   English   中英

将逗号替换为分隔符

[英]Replace comma as separator

我正在尝试构建一个正则表达式来替换用作普通文本之间分隔符的逗号。

我可以替换的不同方法是有效的:

  • 逗号前的空格
  • 逗号在文本和/或数字之间,没有任何空格
  • 几个逗号一个接一个

例子:

"This is a text separated with comma, that I try to fix. , It can be split in several ways.,1234321  , I try to make all the examples in one string,,4321,"

结果:

  • 这是一个用逗号分隔的文本,我试图修复它。
  • 它可以通过多种方式拆分。
  • 1234321
  • 我尝试在一个字符串中制作所有示例

  • 4321

这是我目前使用 Node.js / Javascript 的代码:

data.replace(/(\S,\S)|( ,)|(,,)|(,([a-z0-9]))/ig,';')

@torazaburo 的答案效果最好,除了几个逗号中间有空格 (, , , ,)

console.log(str.split(/ +, *|,(?=\w|,|$)/));
data.replace(/\s*,+\s*/g, ';');

这将产生:

这是一个用逗号分隔的文本;我尝试修复它。它可以通过多种方式拆分。;1234321;我尝试将所有示例放在一个字符串中;4321;

这包括三个部分:

  1. \\s* :匹配零个或多个空白字符。
  2. ,+ : 匹配一个或多个逗号。
  3. \\s* :匹配零个或多个空白字符。

相反,如果您想用单个分号替换任意数量的连续逗号:

data.replace(/,+/g, ';');

老实说,我不确定我是否理解您的要求。 如果我确实误解了,请提供您期望的输出字符串。

 var str = "This is a text separated with comma, that I try to fix. , It can be split in several ways.,1234321 , I try to make all the examples in one string,,4321,"; console.log(str.split(/ +, *|,(?=\\w|,|$)/));

这将在前面有一个或多个空格的任何逗号上拆分,无论后面是什么(并吃掉前面的空格和后面的空格,如果有的话); , 任何逗号后跟字母数字或逗号或字符串结尾。

正则表达式没有简单的方法来摆脱结果中的最终空字符串,这是由输入末尾的逗号引起的。 如果你不想要它,你可以自己摆脱它。

要重新加入分号,请添加.join(';')

暂无
暂无

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

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