我有以下值的列:
好的,,A,B,INSERV,OOS,,
我想用 Regex.Replace (field,"replace pattern") 得到以下结果,所以如果字符串之间有双逗号,那么在逗号之间放置 NONE 并删除最后的多个逗号:
OK,NONE,A,B,INSERV,OOS
谢谢,小号
您将需要至少两个替换调用,一个用于结尾的逗号,一个用于中间的逗号:
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();