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

C# 正则表达式删除字符串中的双/三逗号,c#,regex,C#,Regex,我需要解析一个字符串,因此结果应该是这样输出的: "abc,def,ghi,klm,nop" ",,,abc,,def,ghi,,,,,,,,,klm,,,nop" 但我收到的字符串可能更像: "abc,def,ghi,klm,nop" ",,,abc,,def,ghi,,,,,,,,,klm,,,nop" 关键是,我事先不知道单词之间有多少逗号。 有没有可以在C中使用的正则表达式可以帮助我解决这个问题?搜索,+,并用,替换所有的正则表达式 所以在C#中,这可能看起来像 resultSt

我需要解析一个字符串,因此结果应该是这样输出的:

"abc,def,ghi,klm,nop"
",,,abc,,def,ghi,,,,,,,,,klm,,,nop"
但我收到的字符串可能更像:

"abc,def,ghi,klm,nop"
",,,abc,,def,ghi,,,,,,,,,klm,,,nop"
关键是,我事先不知道单词之间有多少逗号。

有没有可以在C中使用的正则表达式可以帮助我解决这个问题?

搜索
,+
,并用
替换所有的正则表达式

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

resultString = Regex.Replace(subjectString, ",,+", ",");

,+
表示“匹配两个或多个逗号的所有匹配项”,因此不会触及单个逗号。这也可以写成
,{2,}

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

您可能还需要一个
Trim
调用,以删除
Regex.Replace
调用中剩余的任何前导或尾随逗号。(有可能仅仅通过一个正则表达式替换就可以做到这一点,但并没有立即想到什么。)


没有正则表达式的简单解决方案:

string items = inputString.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
string result = String.Join(",", items);

实际上,你可以不用任何修剪调用就可以做到

text = Regex.Replace(text, "^,+|,+$|(?<=,),+", "");
text=Regex.Replace(text,“^,+|,+$|”(?以下是我的工作:

//Below is the test string 
string test = "YK     002       10        23           30         5       TDP_XYZ  "
private static string return_with_comma(string line)
    {
        line = line.TrimEnd();
        line = line.Replace("  ", ",");
        line = Regex.Replace(line, ",,+", ",");
        string[] array;
        array = line.Split(',');
        for (int x = 0; x < array.Length; x++)
        {
            line += array[x].Trim();
        }
        line += "\r\n";
        return line;
    }
 string result = return_with_comma(test);
 //Output is
 //YK,002,10,23,30,5,TDP_XYZ  
//下面是测试字符串
字符串测试=“YK 002 10 23 30 5 TDP_XYZ”
私有静态字符串返回带逗号的字符串(字符串行)
{
line=line.TrimEnd();
行=行。替换(“,”,”);
行=Regex.Replace(行,“,+”,“,”);
字符串[]数组;
数组=line.Split(',');
for(int x=0;x
很高兴知道这个解决方案!谢谢!