Вы можете попробовать что-то вроде этого:
- Разделить на новые строки
- Найти подходящие строки по регулярному выражению
- Выберите захватgroup 1 и 2
- Сопоставить группы анонимному типу
- Создать пустую таблицу данных
- Заполнить таблицу данных сейчас.
Регулярное выражение: (. *?) \ S (\ d +)
Объяснение регулярного выражения:
1st Capturing Group (.*?)
.*? matches any character (except for line terminators)
*? Quantifier — Matches between zero and unlimited times, as few times as possible, expanding as needed (lazy)
\s matches any whitespace character (equal to [\r\n\t\f\v ])
2nd Capturing Group (\d+)
\d+ matches a digit (equal to [0-9])
+ Quantifier — Matches between one and unlimited times, as many times as possible, giving back as needed (greedy)
код:
string contents = File.ReadAllText(@"test.txt");
string pattern = @"(.*?)\s(\d+)";
var query = contents.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Where(x => Regex.IsMatch(x, pattern))
.Select(x => Regex.Match(x, pattern))
.Select(x => new
{
Name = x.Groups[1].Value,
Value = Convert.ToInt32(x.Groups[2].Value)
});
DataTable dataTable = new DataTable();
dataTable.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));
dataTable.Columns.Add(new DataColumn("Value", Type.GetType("System.Int32")));
foreach (var item in query)
{
DataRow dr = dataTable.NewRow();
dr["Name"] = item.Name;
dr["job1"] = item.Value;
dataTable.Rows.Add(dr);
}