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
答案 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中运行,但我认为它不值得为它们带来麻烦。