Если у вас есть текстовая строка, вы можете использовать метод Split()
, чтобы разбить ее на несколько частей. Если вы уверены, что каждое слово (разделенное одним или несколькими пробелами) является столбцом, вы можете просто написать:
string[] columns = line.Split(' ');
Существует несколько перегрузок этой функции, вы можете указать, пропускаются ли пустые поля (например, вы можете иметь, например, columns[1]
пустым в строке, состоящей из 2 слов, но разделенных двумя пробелами). Если вы уверены в количестве столбцов, вы также можете установить это ограничение (поэтому, если какой-либо текст после последнего столбца будет рассматриваться как одно поле).
В вашем случае (добавить в список только первый столбец) вы можете написать:
if (String.IsNullOrWhiteSpace(line))
continue;
string[] columns = line.TrimLeft().Split(new char[] { ' ' }, 2);
list.Add(columns[0]);
Первая проверка - пропустить пустые строки или строки, состоящие только из пробелов. TrimLeft()
- удалить пробелы из начала строки (если есть). Первый столбец не может быть пустым (потому что TrimLeft()
, поэтому вам даже не нужно использовать StringSplitOptions.RemoveEmptyEntries
с дополнительным if (columns.Length > 1)
. Наконец, если файл достаточно мал, вы можете прочитать его в памяти одним вызовом File.ReadAllLines()
и упростить все с небольшим количеством LINQ:
list.Add(
File.ReadAllLines("test.txt")
.Where(x => !String.IsNullOrWhiteSpace(x))
.Select(x => x.TrimLeft().Split(new char[] { ' ' }, 2)[0]));
Обратите внимание, что с первым параметром вы можете указать более одного допустимого разделителя.