正则表达式。替换为将NONE放在逗号之间,并删除最后一个多个逗号

时间:2019-03-20 20:42:34

标签: c# regex

我有一个具有以下值的列:

OK 、、 A,B,INSERV,OOS,

,我想用Regex.Replace(字段,“替换模式”)获得以下结果,因此如果字符串之间有双逗号,则在逗号之间放NONE 并删除最后一个逗号:

确定,无,A,B,INSERV,OOS

谢谢, S

1 个答案:

答案 0 :(得分:0)

您至少需要两个替换调用,一个用于尾随逗号,一个用于中间的逗号:

var input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,(?=,)/g, ',NONE'); // add NONE
console.log(input);

input = 'OK,,,A,B,INSERV,OOS,,';
input = input.replace(/,*$/, ''); // remove trailing commas
input = input.replace(/,{2,}/g, ',NONE,'); // add NONE
console.log(input);

首先,我们应该删除结尾的逗号,以免在那里没有任何“ NONE”条目。然后,我们检查逗号,然后检查与逗号匹配的超前断言。即使出现多个逗号,我也使用了前瞻性来使正则表达式正常工作(请参见示例)。

我添加了两种可能的路由,一种在所有逗号之间放置“ NONE”,另一种将任意数量的逗号减少为一个“ NONE”条目。

C#语法应为

var input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",(?=,)", ",NONE"); // add NONE
input.Dump();

input = "OK,,,A,B,INSERV,OOS,,";
input = input.TrimEnd(',');
input = Regex.Replace(input, ",{2,}", ",NONE,"); // add NONE
input.Dump();