Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2015, 17:04   #1
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию Не могу написать парсер

Ребят дан текстовый файл(например лог.txt,всего тысяча строк), внутри такая структура: номер события,код узла,номер отклонения, дата возникновения, время на устранение,коли-во попыток восстановления,кол-во повторных попыток,кол-во пропусков,описание отклонения. Задача прочитать текстовый файл,вычислить среднее время на устранение отклонения,и записать это в другой текстовый файл.

#,LM,Jam ID,Date Occurred,Time Jammed,Rc,Rt,Cl,Jam Text
001,05,015,04/07/15 15:18,00:00:32,01,02,00,Picker can't detect all parts:Ck #1 A1
002,02,030,09/21/15 15:17,00:00:19,00,00,01,ATT unable to detect tray at Gripper
003,01,045,09/21/15 15:15,00:01:32,00,01,00,Aux tray is hanging on guides or stuck in gripper.
004,01,045,09/21/15 15:15,00:00:17,00,01,00,Aux tray is hanging on guides or stuck in gripper.
005,04,030,09/18/15 19:28,00:00:55,01,02,00,Missing sort device(s) on sort boat. B1
006,05,029,09/18/15 19:24,00:01:39,06,06,01,TS Picker missing parts:Ck #1 A1
Fil_1990 вне форума Ответить с цитированием
Старый 23.09.2015, 17:13   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы пытались?
там банальный файл.
каждую строку сплитим(string.Split) по запятой и далее имеем массив этих полей одной строки.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.09.2015, 17:15   #3
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Пока не совсем хорошо получается работать с файлами, задали такую задачу.
Fil_1990 вне форума Ответить с цитированием
Старый 23.09.2015, 17:25   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

для того, чтобы полностью прочитать текстовый файл, достаточно написать так:

Код:
using System.IO;
.........
string path = @"c:\temp\MyTest.txt";
string[] readText = File.ReadAllLines(path);
перебрать все строчки:
Код:
foreach (string s in readText)
        {
           // тут делаешь что надо, для примера, вывод в консоль Console.WriteLine(s);
          // или разбиваешь строчку на отдельные элементы и обрабатываешь их...
        }
пример кода мною нагло скопирован с офсайта: https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx

теперь про Split:
легче-лёгкого разобрать строчку по запятым:
Код:
string[] elements = s.Split(',');
всё. в массиве elements все ваши значения, каждое - это отдельный элемент массива.

Дальше справитесь?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.09.2015, 17:27   #5
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Огромное спасибо, прошу вас объяснить далее, заранее благодарю!!!
Fil_1990 вне форума Ответить с цитированием
Старый 23.09.2015, 17:36   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
прошу вас объяснить далее
Для начала ты покажи кодом, как ты понял то, что Сергей описал
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2015, 17:38   #7
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\a.filatov\Desktop\1\COMMA.txt";
            string[] readText = File.ReadAllLines(path);
            
            foreach (string s in readText)
            {
                string[] elements = s.Split(','); 
            }

           
            
            }
        }
    }
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 24.09.2015 в 09:31.
Fil_1990 вне форума Ответить с цитированием
Старый 24.09.2015, 09:33   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну, молодец. теперь осталось перевести пятый элемент массива (нумерация от нуля, поэтому это elements[4] ) из строки в числовое значение, сложить, разделить на количество строк, полученный результат вывести в формате времени в нужный файл.
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2015, 10:01   #9
Fil_1990
Пользователь
 
Регистрация: 23.09.2015
Сообщений: 76
По умолчанию

А реализовать это я затрудняюсь(
Fil_1990 вне форума Ответить с цитированием
Старый 24.09.2015, 11:15   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

помедитируйте над следующим примером кода:

Код:
			TimeSpan intervalsum = new TimeSpan();
			TimeSpan current_time;
			int countRepair = 0;
			string[] timeToRepair = new string[4] { "00:00:55", "00:01:20", "00:02:05", "00:00:00" };
			
			foreach (var s in timeToRepair) {
				if (TimeSpan.TryParse(s, out current_time)) {
				    	intervalsum += current_time;
				    	countRepair++;
				    }
   
			}
			Console.WriteLine("summa = {0}, count = {1}", intervalsum, countRepair);
			Console.WriteLine("summa in seconds  = {0:N5}", intervalsum.TotalSeconds);
			Console.WriteLine("Average time (in seconds) = {0:N5}", intervalsum.TotalSeconds/countRepair);
			TimeSpan  intervalAverage = TimeSpan.FromSeconds( intervalsum.TotalSeconds/countRepair );
			Console.WriteLine("Average time = {0}", intervalAverage);


			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простой парсер, не могу получить href из html (DOM) strongmaster Общие вопросы Delphi 3 08.08.2015 21:10
Написать парсер elena380 Фриланс 3 26.11.2013 12:33
написать парсер Goodmaer Фриланс 1 19.05.2013 23:15
Нужно написать парсер tish88 Фриланс 35 02.09.2011 09:47
Требуется написать парсер-граббер сайтов bashkov Фриланс 4 28.07.2009 01:12