我有一个具有以下值的列:
OK 、、 A,B,INSERV,OOS,
,我想用Regex.Replace(字段,“替换模式”)获得以下结果,因此如果字符串之间有双逗号,则在逗号之间放NONE 并删除最后一个逗号:
确定,无,A,B,INSERV,OOS
谢谢, S
答案 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();