Сохранение данных полученных в Regex.Matches - C#
Формулировка задачи:
Стоит задача парсинга многострочного файла .txt (объемом 100-200 mb).
Для парсера использую регулярное выражение, но по итогам процесса, при попытки получения количества элементов (.Count) и/или отправки результатов в коллекцию, компилятор выдает ошибку: An unhandled exception of type 'System.OutOfMemoryException' occurred in System.dll (до этого лавинообразно увеличивается потребление ОЗУ).
подскажите плз что я делаю не так
static void Main(string[] args) { List<Data> myData = new List<Data>(); string fileName = File.ReadAllText("j:\\task01\\TextFile.txt"); var matches = Regex.Matches(fileName, @"([A-Za-z]+)", RegexOptions.IgnoreCase); int x = matches.Count; foreach (Match m in matches) myData.Add(new Data(m.Value)); Console.ReadKey(); }
Решение задачи: «Сохранение данных полученных в Regex.Matches»
textual
Листинг программы
var dict = new Dictionary<string, int>(); string line; MatchCollection matches; string key; Regex reg = new Regex(@"[a-z]+"); using(var sr = new StreamReader(@"c:\c#\1.txt",Encoding.Default)) while(!sr.EndOfStream) { line = sr.ReadLine().ToLower(); matches = reg.Matches(line); foreach(Match m in matches) { key = m.ToString(); if(!dict.ContainsKey(key)) dict.Add(key, 1); else dict[key]++; } } foreach(var item in dict) { Console.WriteLine(item.Key + " = " + item.Value); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д