在C#中修剪String数组的内容

时间:2012-12-21 13:23:15

标签: c# visual-studio-2005 .net-2.0 trim

    String []lines = System.IO.File.ReadAllLines(path);
    foreach (String line in lines)
    {
        line.Trim();
    }

显然这不起作用,因为String.Trim将Trimmed版本作为新String返回。你做不到line = line.Trim()。那么这是一个老派for循环的唯一方法吗?

    for(int i=0;i<lines.Length;++i)
    {
        lines[i] = lines[i].Trim();
    }

注意我仅限于Visual Studio 2005,即.Net 2.0

4 个答案:

答案 0 :(得分:8)

lines.Select(l => l.Trim()).ToArray();

或者,对于.NET 2.0:

static IEnumerable<string> GetTrimmed(IEnumerable<string> array)
{
    foreach (var s in array)
        yield return s.Trim();
}

通过:

使用
lines = new List<string>(GetTrimmed(lines)).ToArray();

答案 1 :(得分:1)

根据this,我们在.NET 2.0中有List<string>

所以,试试List<string>

String []lines = System.IO.File.ReadAllLines(path);

List<string> yourLinesTrimed = new List<string>;
foreach (String line in lines)
{
        yourLinesTrimed.Add(line.Trim());
}

然后,您可以使用List<string>转换数组中的ToArray()

让我们构建一个执行此操作的方法:

 public String[] TrimAnArray(String[] lines)
 {
     List<string> yourLinesTrimed = new List<string>;
     foreach (String line in lines)
     {
         yourLinesTrimed.Add(line.Trim());
     }
     return yourLinesTrimed.ToArray();
 }

答案 2 :(得分:1)

“这是一个老式for循环的唯一方法吗?”是的,在.NET 2上你没有Linq的东西。但说实话,“老派循环”也是最有效,最可读和最短的方法。那有什么问题?

for(int i = 0; i < lines.Length; i++)
    lines[i] = lines[i].Trim();

答案 3 :(得分:0)

你也可以使用LINQ:

String []lines = System.IO.File.ReadAllLines(path)
                .Select(line => line.Trim())
                .ToArray();

修改

如果你只限于.NET 2.0,那么我会像你在第二个代码示例中那样坚持使用for循环。我不认为有更好的方法可以做到这一点,for循环足够有效。当然有一些解决方法可以让LINQ在.NET 2.0中运行,但我认为它不值得为它们带来麻烦。