c#修剪逗号直到出现文本



我试图从字符串中删除任何逗号,但不是全部。我已经在论坛上搜索了很多,但我找不到解决方案。让我用一个例子来解释一下:

所以基本上,我有一个有很多行的文件。它们看起来像这样:

,,,,,9,33380,32785,14,,,,,50,,,,,,3,,,,600
,,,,19,33399,32774,14,,,,,50,,,,,,2,,,,600
,,,,19,33399,32784,14,,,,,50,,,,,,3,,,,600
,,,,38,33380,32789,14,,,,,50,,,,,,1,,,,600
,,,,38,33404,32793,14,,,,,50,,,,,,1,,,,600
,,,,79,33394,32795,14,,,,,50,,,,,,2,,,,600
,,,,83,33396,32789,14,,,,,50,,,,,,5,,,,600
,,,100,33399,32779,14,,,,,50,,,,,,3,,,,600
,,,101,33399,32797,14,,,,,50,,,,,,2,,,,600

我想要的输出是在值之间保留一个逗号。并删除字符串开头的任何前导逗号。像这样:

9,33380,32785,14,50,3,600
19,33399,32774,14,50,2,600
19,33399,32784,14,50,3,600
38,33380,32789,14,50,1,600
38,33404,32793,14,50,1,600
79,33394,32795,14,50,2,600
83,33396,32789,14,50,5,600
100,33399,32779,14,50,3,600
101,33399,32797,14,50,2,600

我曾尝试使用text.Replace(',',''),但后来它将它们全部删除。不幸的是,我在RegEx也不是很好,我甚至不知道这是否可能。

任何帮助都将不胜感激!

您可以使用以下regex将多个逗号压缩为一个,然后使用Trim删除任何前导或尾随逗号

var result = Regex.Replace(inpyut, ",+", ",").Trim(',');

有两个解决方案

,分隔符拆分并删除空条目(',,'(,然后使用相同的,分隔符重新生成字符串。

var result = string.Join(",", ",,,,,9,33380,3272774,,".Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries);

这是我的解决方案

text = ",,,,,9,33380,32785,14,,,,,50,,,,,,3,,,,600";
while (text.Contains(",,"))
{
text = text.Replace(",,", ",");
}
if (text.Substring(0, 1) == ",") {
int textLength = text.Length;
text = text.Substring(1, textLength - 1);
}

希望它能帮助你:(

@juharr的答案看起来很棒,但如果性能有问题,最好在替换之前进行修剪,并将两个或多个逗号更改为一个。因此给出:

var result = Regex.Replace(inpyut.Trim(','), ",,+", ",");

最新更新