Извлечение нужных данных регулярным выражениям и добавление в ListView - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Имеется текстовый файл. И этот текстовый файл постоянно заполняется вообщем. В текстовом файле текст таково шаблона
L 02/10/2016 - 01:54:09: Log file started (file "valve/addons/amxmodx/configs/PlayerLogs.txt") (game "valve") (amx "1.8.2") L 02/10/2016 - 01:54:09: NICK: man 36 VRN IP: 107.105.144.13 STEAMID: STEAM_0:0:235854415 MAP: 2000_2_no_mortal L 02/10/2016 - 01:54:09: NICK: Sido Ocytocine IP: 61.200.102.151 STEAMID: STEAM_ID_LAN MAP: 2000_2_no_mortal L 02/10/2016 - 01:54:09: NICK: Pro100>kapocta IP: 91.222.50.9 STEAMID: STEAM_0:0:2359701861 MAP: 2000_2_no_mortal L 02/10/2016 - 01:54:09: NICK: Android IP: 88.115.80.21 STEAMID: STEAM_0:0:564012456 MAP: 2000_2_no_mortal L 02/10/2016 - 02:02:36: NICK: 4iter IP: 89.19.113.245 STEAMID: STEAM_0:0:521548501 MAP: 2000_2_no_mortal L 02/10/2016 - 02:54:01: NICK: Olegator IP: 128.54.14.38 STEAMID: STEAM_0:0:1351278428 MAP: 2000_2_no_mortal L 02/10/2016 - 13:50:12: NICK: Sav (Pension Power!!) IP: 85.25.75.72 STEAMID: STEAM_0:1:3254598 MAP: 2000_2_no_mortal
Цель: Помогите выдернуть NICK, IP, STEAMID, MAP и заполнить их в ListView типа такой таблицы: | NICK | IP | STEAMID | MAP | man 36 VRN 107.105.144.13 STEAM_0:0:235854415 2000_2_no_mortal Sido Ocytocine 61.200.102.151 STEAM_ID_LAN 2000_2_no_mortal Pro100>kapocta 91.222.50.9 STEAM_0:0:2359701861 2000_2_no_mortal ....... и тд... PS: Вот эта строка
L 02/10/2016 - 01:54:09: Log file started (file "valve/addons/amxmodx/configs/PlayerLogs.txt") (game "valve") (amx "1.8.2")
записывается в начале файла. Он записывается один раз на самой первой строчке... а дальше запись введется по однотипному шаблону

Решение задачи: «Извлечение нужных данных регулярным выражениям и добавление в ListView»

textual
Листинг программы
  1. using System;
  2. using System.Linq;
  3. using System.Text.RegularExpressions;
  4.  
  5. public class Program
  6. {
  7.     public static void Main(string[] args)
  8.     {
  9.         var lines = new string[]
  10.         {
  11.             "L02/10/2016 - 01:54:09: Log file started (file "valve/addons/amxmodx/configs/PlayerLogs.txt") (game "valve") (amx"1.8.2")",
  12.     "L 02/10/2016 - 01:54:09: NICK: man 36 VRN  IP: 107.105.144.13  STEAMID: STEAM_0:0:235854415    MAP: 2000_2_no_mortal",
  13.     "L 02/10/2016 - 01:54:09: NICK: Sido Ocytocine  IP: 61.200.102.151  STEAMID: STEAM_ID_LAN   MAP: 2000_2_no_mortal",
  14.     "L 02/10/2016 - 01:54:09: NICK: Pro100>kapocta  IP: 91.222.50.9 STEAMID: STEAM_0:0:2359701861   MAP: 2000_2_no_mortal",
  15.     "L 02/10/2016 - 01:54:09: NICK: Android IP: 88.115.80.21    STEAMID: STEAM_0:0:564012456    MAP: 2000_2_no_mortal",
  16.     "L 02/10/2016 - 02:02:36: NICK: 4iter   IP: 89.19.113.245   STEAMID: STEAM_0:0:521548501    MAP: 2000_2_no_mortal",
  17.     "L 02/10/2016 - 02:54:01: NICK: Olegator    IP: 128.54.14.38    STEAMID: STEAM_0:0:1351278428   MAP: 2000_2_no_mortal",
  18.     "L 02/10/2016 - 13:50:12: NICK: Sav (Pension Power!!)   IP: 85.25.75.72 STEAMID: STEAM_0:1:3254598  MAP: 2000_2_no_mortal"
  19.         };
  20.  
  21.         var nickReg = new Regex(@"(?<=NICK: ).*(?=\sIP:)");
  22.         var ipReg = new Regex(@"(?<=IP: ).*(?=\sSTEAMID:)");
  23.         var steamReg = new Regex(@"(?<=STEAMID: ).*(?=\sMAP:)");
  24.         var mapReg = new Regex(@"(?<=MAP: ).*$");
  25.  
  26.         var rows = from line in lines
  27.             let nick = nickReg.Match(line)
  28.             let ip = ipReg.Match(line)
  29.             let steam = steamReg.Match(line)
  30.             let map = mapReg.Match(line)
  31.             where nick.Success && ip.Success && steam.Success && map.Success
  32.             select new {nick, ip, steam, map};
  33.  
  34.         foreach (var row in rows)
  35.         {
  36.             Console.WriteLine("{0}\t{1}\t{2}]\t{3}", row.nick, row.ip, row.steam, row.map);
  37.         }
  38.     }
  39. }

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


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

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

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы