Сохранение данных полученных в 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);
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5