正则表达式删除字符串中的双/三逗号

Mis*_*hie 8 c# regex

我需要解析一个字符串,所以结果应该像这样输出:

"abc,def,ghi,klm,nop"
Run Code Online (Sandbox Code Playgroud)

但我收到的字符串看起来更像是:

",,,abc,,def,ghi,,,,,,,,,klm,,,nop"
Run Code Online (Sandbox Code Playgroud)

关键是,我事先并不知道有多少逗号分隔了这些词.
我可以在C#中使用正则表达式来帮助我解决这个问题吗?

Luk*_*keH 11

您可以使用,{2,}表达式匹配任何两个或更多逗号的出现,然后用一个逗号替换它们.

您可能也需要Trim在那里进行呼叫,以删除Regex.Replace呼叫遗留的任何前导或尾随逗号.(有可能有一些方法可以通过正则表达式替换来实现这一点,但没有任何东西可以立即引起注意.)

string goodString = Regex.Replace(badString, ",{2,}", ",").Trim(',');
Run Code Online (Sandbox Code Playgroud)


Tim*_*ker 6

搜索,,+并替换所有,.

所以在C#中可能看起来像

resultString = Regex.Replace(subjectString, ",,+", ",");
Run Code Online (Sandbox Code Playgroud)

,,+表示"匹配所有出现的两个逗号或更多",因此不会触及单个逗号.这也可以写成,{2,}.