0

我有以下值的列:

好的,,A,B,INSERV,OOS,,

我想用 Regex.Replace (field,"replace pattern") 得到以下结果,所以如果字符串之间有双逗号,那么在逗号之间放置 NONE 并删除最后的多个逗号:

OK,NONE,A,B,INSERV,OOS

谢谢,小号

4

1 回答 1

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();
于 2019-03-20T20:47:18.970 回答