Чтобы отфильтровать строки и извлечь только IP-адреса из указанных вами форматов, вы можете воспользоваться регулярными выражениями. В C# это можно сделать с помощью класса `Regex`. Вот пример кода, который демонстрирует, как это сделать:
```csharp
using System;
using System.Text.RegularExpressions;
namespace RtspViewer.Forms
{
public static class IpFilter
{
public static string ExtractIpAddress(string input)
{
// Шаблон для поиска IP-адресов
string pattern = @"(?<ip>(\b(?:[0-255]{1,3}\.){3}(?:[0-255]{1,3})\b))";
// Используем регулярное выражение для поиска совпадений
Match match = Regex.Match(input, pattern);
if (match.Success)
{
// Возвращаем найденный IP-адрес
return match.Groups["ip"].Value;
}
return string.Empty; // Если IP не найден, возвращаем пустую строку
}
}
class Program
{
static void Main(string[] args)
{
// Примеры адресов
string[] addresses = {
"rtsp://192.0.0.1:554/trackID=2",
"192.168.5.17:554/trackID=2",
"255.255.0.0:554"
};
foreach (var address in addresses)
{
string ip = IpFilter.ExtractIpAddress(address);
Console.WriteLine($"Извлеченный IP: {ip}");
}
}
}
}
```
### Пояснение к коду:
1. **Regex.Match**: Используется для поиска совпадений в строке на основе заданного шаблона.
2. **Шаблон**: `@"(?<ip>(\b(?:[0-255]{1,3}\.){3}(?:[0-255]{1,3})\b))"`
- `\b` — граница слова, позволяет избежать захвата лишних символов.
- `(?:[0-255]{1,3}\.){3}` — три группы, каждая из которых состоит из 1-3 цифр от 0 до 255, заканчивающихся точкой.
- `(?:[0-255]{1,3})` — последняя группа из 1-3 цифр от 0 до 255.
3. **Match.Groups**: Позволяет получить значение группы, которая соответствует найденному IP-адресу.
### Запуск:
При запуске программы вы получите консольный вывод с извлеченными IP-адресами из заданных строк. Если строка не содержит IP-адреса, будет возвращена пустая строка.