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

c#修剪逗号直到出现文本,c#,string,split,C#,String,Split,我尝试从字符串中删除任何逗号,但不是全部。我在整个论坛上都在寻找这个问题,但我找不到解决办法。让我用一个例子来解释: 所以基本上,我有一个有很多行的文件。它们看起来像这样: ,,,,,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,,,,,,

我尝试从字符串中删除任何逗号,但不是全部。我在整个论坛上都在寻找这个问题,但我找不到解决办法。让我用一个例子来解释:

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

,,,,,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(',','')
,但后来它将它们全部删除。 不幸的是,我也不是很擅长正则表达式,我甚至不知道这是否可能


任何帮助都将不胜感激

有两种解决方案

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

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

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

var result = Regex.Replace(inpyut, ",+", ",").Trim(',');
这是我的解决办法

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(','), ",,+", ",");

非常感谢你!它工作得很好!我不知道
.Join
StringSplitOptions.RemoveEmptyEntries
。太神了顺便问一下,我怎么能把它们分成不同的字符串呢?所以分隔符应该是逗号。当我这样做时:
var x=result.Split(',')[0]我得到第一个数字。但是当我做
varb=result.Split(',')[1]
我收到一个错误,错误是:
System.IndexOutOfRangeException:“索引超出了数组的边界。”
是否应该将
[1]
作为第二个单词(第一个逗号之后)?使用逗号字符拆分字符串,删除所有空项,然后获取结果并在每个项之间放置一个逗号。当然可以,但这是一个黑客;)你有这样的例子吗?我尝试使用
.First()
,然后得到第一个值。但是如果我跳过(1)
得到第二个,我会得到同样的错误。我试过很多方法用逗号把它分开。似乎不起作用。一个合乎逻辑的解决方案将是@juharr所建议的,因为任何阅读代码的人都会马上知道,它将用一个逗号替换多个逗号,并删除前面的逗号。自我记录代码。您可以将我的评论视为友好建议或攻击,但这只是友好建议。您知道如何将字符串拆分为多个字符串吗?分隔符将是逗号。我现在正在尝试,但它不起作用。我可以得到第一个值,但不能得到第二个、第三个、第四个,等等<代码>var parts=result.Split(',');var a=parts.First();var b=parts.Skip(1.First()尝试类似(未测试)
foreach(result.Split(','){Console.WriteLine($“”);}
的代码,以准确查看结果中的内容。评论中的问题没有提供足够的详细信息,无法了解为什么会得到意外结果。每行有7个字符串,用逗号分隔。所以我试着用它来做7个字符串。所以字符串a=第一个值。字符串b=第二个值。每一个都用逗号分隔。您的foreach循环将每个单词打印到一行中,但是如何将这些变量添加到名为“a,b,c,d,e,f,g”的字符串中呢?下面是一个示例。运行代码后,我在一个名为“result”的变量中得到字符串,现在我想将其拆分为更小的字符串,如下所示:
string result=“1003340032780,13,50,2600”;字符串a=“100”;字符串b=“33400”;字符串c=“32780”
@MJ您似乎试图在评论部分提出一个与原始问题无关的新问题。如果您还有其他问题,请创建一个新问题,并具体说明您的需求。这似乎是采取的合乎逻辑的方法。