Удалить из текста определенные IP-адреса - C#
Формулировка задачи:
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова
сообщения разделяются пробелами и знаками препинания.В сообщении могут содержаться IP-адреса компьютеров в формате d.d.d.d, где
d – целое число из диапазона от 0 до 255. Удалить из сообщения IP-адреса, в которых
последнее число d начинается с заданной цифры (данная цифра вводится с клавиатуры).
Для ввода нескольких строк можно использовать следующий фрагмент
программы
// Ввод данных
string text = ""; // Исходный текст из нескольких строк
Console.WriteLine("Введите строки. Пустая строка - конец ввода!");
string st = Console.ReadLine(); // st - текущая строка text
while (st != "") // Пока st не пуста
{
text += "\n" + st;
st = Console.ReadLine();
}Решение задачи: «Удалить из текста определенные IP-адреса»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// Ввод данных
string text = ""; // Исходный текст из нескольких строк
Console.WriteLine("Введите строки. Пустая строка - конец ввода!");
string st = Console.ReadLine(); // st - текущая строка text
while (st != "") // Пока st не пуста
{
text += "\n" + st;
st = Console.ReadLine();
}
int d = -1;
while(d < 1 || d > 9)
{
Console.Write("Введите цифру от 1 до 9: ");
d = Convert.ToInt32(Console.ReadLine());
}
string endPattern = "";
if(d == 1)
endPattern = @"(1[0-9]{2}|1[0-9]|1)";
else if (d == 2)
endPattern = @"(25[0-5]|2[0-4][0-9]|2[0-9]|2)";
else
endPattern = d.ToString();
string pattern = @"(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])\.(25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{2}|[0-9])\." + endPattern;
Regex newReg = new Regex(pattern);
string newText = newReg.Replace(text, "");
Console.WriteLine("Новый текст: " + newText);
Console.ReadLine();
}
}
}