在c#中修改字符串数组的内容

本文关键字:数组 字符串 修改 | 更新日期: 2023-09-27 17:49:15

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

显然这不起作用,因为String.Trim返回裁剪后的版本作为一个新的字符串。你不能做line = line.Trim()。那么唯一的方法是老式的for循环吗?

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

注意我仅限于Visual Studio 2005即。net 2.0

在c#中修改字符串数组的内容

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();

"那么唯一的方法就是老式的for循环吗?"是的,在。net 2中你没有Linq的东西。但说实话,"老派的for循环"也是最有效、最易读和最短的方法。那么问题是什么呢?

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

据此,我们在。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());
}

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

让我们构建一个方法:

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

您也可以使用LINQ:

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

编辑:

如果您仅限于。net 2.0,那么我会坚持使用在第二个代码示例中所做的for循环。我认为没有更好的方法了,for循环已经足够有效了。当然,有一些变通方法可以使LINQ在。net 2.0中工作,但我认为不值得这么麻烦。