1

我有一个字符串,我想在一个特定的分隔符上拆分它,然后从每个成员中删除起始和尾随空格。目前代码如下所示:

string s = "A, B, C ,D";
string[] parts = s.Split(',');
for(int i = 0; i++; i< parts.Length)
{
     parts[i] = parts[i].Trim();
}

我觉得应该有一种方法可以用 lambdas 来做到这一点,这样它就可以放在一条线上,但我无法绕开它。我宁愿远离 LINQ,但我也不反对它作为解决方案。

string s = "A, B, C ,D";
string[] parts = s.Split(','); // This line should be able to perform the trims as well

我最近一直在使用 Python,我认为这让我重新审视了我如何看待 C# 中问题的解决方案。

4

3 回答 3

8

关于什么:

string[] parts = s.Split(',').Select(x => x.Trim()).ToArray();
于 2013-02-25T19:13:15.050 回答
4
var parts = s.Split(',').Select(part => part.Trim());
于 2013-02-25T19:13:31.723 回答
1

如果您真的想避免使用 LINQ,您可以拆分多个字符并丢弃在“,”和空格之间获得的额外“空”条目。请注意,您最终可能会得到奇怪的结果(例如,如果您有连续的“,”分隔符,您将不会再在它们之间获得空字符串):

s.Split(new char[] { ',', ' ' }, StringSplitOptions.RemoveEmptyEntries);

这将适用于您的示例输入,但它非常脆弱。例如,正如@Oscar 指出的那样,令牌中的空格也会导致它们被拆分。我强烈建议您改用基于 LINQ 的选项之一。

于 2013-02-25T19:18:58.550 回答