@SaddledSharp
Кодер. Увлекаюсь информационной безопасностью.

C#.Как спарсить текст со всеми совпадениями?

Всем привет.
У меня к примеру есть такой текст:
-IP: 19283.123.12.3
-Contact As: ****@mail.ru
-Admin: admin

-IP: 123.12.312.31
-Contact As: ****@mail.ru
-Admin: admin

-IP: 23.11.23.123
-Contact As: ****@mail.ru
-Admin: admin

И к примеру я ввожу: "IP"
И программа должна мне выдать все совпадения
То есть вот так:
IP: 19283.123.12.3
IP: 123.12.312.31
IP: 23.11.23.123

Как такое сделать? Помогите.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
yuopi, думаю уже перебор. достаю свой вариант из каментов
using System;
using System.Linq;
 
namespace parse_ip
{
    class Program
    {
        static void Main(string[] args)
        {
            var l = Console.In.ReadToEnd()
                .Split(Environment.NewLine)
                .Select(s => s.TrimStart('-'))
                .Where(s => s.Contains("IP:"));
            foreach (var s in l)
                Console.WriteLine(s);
        }
    }
}

.. и использование

ps
для работы с произвольным стримом, вставить нужный источник вместо Console.In. хоть WebResponse.GetResponseStream(), хоть сокет.
для работы с обычным текстовым файлом, всместо Console.In.ReadToEnd().Split(Environment.NewLine), вставить File.ReadAllLines("путь+имя").
все.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
Регулярные выражения вам в помощь.
Ответ написан
Комментировать
@yuopi
C# developer
StreamReader _reader = new StreamReader(path);

public string GetNext()
{
    string line;

    while ((line = _reader.ReadLine()) != null)
    {
        var message = WorkWithLine(line);
        if (message != null)
            return message;
        }
        return null;    
    }

}

public string WorkWithLine(string line)
{
    var ip = Regex.Match(line, "IP: .*?\n");
    if (ip.Value.Length > 0)
        return null;          
    return ip.Value;
}

Использование:
void Do()
{
    string msg;
    while(while ((msg = GetNext()) != null) 
        Console.WriteLine(msg);)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы