Обрезать содержимое строкового массива в C#
String []lines = System.IO.File.ReadAllLines(path);
foreach (String line in lines)
{
line.Trim();
}
очевидно, что это не работает, потому что String.Trim
возвращает обрезанную версию в виде новой строки. И ты не можешь этого сделать!--3-->. Так что это единственный способ сделать это старой школы for
петли?
for(int i=0;i<lines.Length;++i)
{
lines[i] = lines[i].Trim();
}
Примечание я ограничен Visual Studio 2005, т. е. .Net 2.0
4 ответов
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();
" Так это единственный способ сделать это старой школы для цикла?" Да, на .NET 2 у вас нет материала Linq. Но, честно говоря," старая школа для цикла " также является наиболее эффективным, наиболее читаемым и кратчайшим подходом. Так в чем проблема?
for(int i = 0; i < lines.Length; i++)
lines[i] = lines[i].Trim();
по данным этой, мы List<string>
в .NET 2.0.
Итак, попробуем с 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();
}
вы также можете использовать LINQ:
String []lines = System.IO.File.ReadAllLines(path)
.Select(line => line.Trim())
.ToArray();
EDIT:
Если вы ограничены .NET 2.0, то я бы придерживался for-loop, как вы сделали во втором примере кода. Я не думаю, что есть намного лучшие способы сделать это, for-loop достаточно эффективен. Конечно, есть некоторые обходные пути для работы LINQ в .NET 2.0, но я не думаю, что это стоит того.