Извлечение нужных данных регулярным выражениям и добавление в ListView - C#
Формулировка задачи:
Всем привет.
Имеется текстовый файл. И этот текстовый файл постоянно заполняется вообщем.
В текстовом файле текст таково шаблона
Цель: Помогите выдернуть 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")
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
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
Листинг программы
using System; using System.Linq; using System.Text.RegularExpressions; public class Program { public static void Main(string[] args) { var lines = new string[] { "L02/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" }; var nickReg = new Regex(@"(?<=NICK: ).*(?=\sIP:)"); var ipReg = new Regex(@"(?<=IP: ).*(?=\sSTEAMID:)"); var steamReg = new Regex(@"(?<=STEAMID: ).*(?=\sMAP:)"); var mapReg = new Regex(@"(?<=MAP: ).*$"); var rows = from line in lines let nick = nickReg.Match(line) let ip = ipReg.Match(line) let steam = steamReg.Match(line) let map = mapReg.Match(line) where nick.Success && ip.Success && steam.Success && map.Success select new {nick, ip, steam, map}; foreach (var row in rows) { Console.WriteLine("{0}\t{1}\t{2}]\t{3}", row.nick, row.ip, row.steam, row.map); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д