没有Substring和str.Length - 1(C#3.0)的帮助,从字符串列表中删除最后一个","

0 c#-3.0

请考虑以下代码段

string src = "ibm,tcs";

string dest = src.Split(',').Select(i => i + "();,").ToArray().Aggregate((s, i) => s + i);

dest = dest.Substring(0, dest.Length - 1);
Run Code Online (Sandbox Code Playgroud)

我正在做的是,源字符串(这里是src)将以逗号分隔的方式使用字符串列表.

最终输出将是: ibm();,tcs();

我们可以知道,我的计划正在这样做.

但我正在帮助dest.Substring(0, dest.Length - 1);消除","我在Select Extension方法中构建的最后一个 .

我不喜欢我的这种做法.

这样做还有其他美丽/优雅的方式吗?我相信有人肯定会以更好的方式接近:)

如果我使用Lambda和扩展方法获得解决方案,我也会很高兴.

我正在使用C#3.0和dot net framework 3.5

谢谢

Jon*_*eet 5

只需使用string.Join而不是Aggregate在Select子句中包含逗号:

string dest = string.Join(",", src.Split(',')
                                  .Select(i => i + "();")
                                  .ToArray());
Run Code Online (Sandbox Code Playgroud)

在.NET 4中,您甚至不需要ToArray()调用(因为已经添加了额外的重载string.Join).

或者,作为一种完全替代的方法:

string dest = src.Replace(",", "();,") + "();";
Run Code Online (Sandbox Code Playgroud)