using System;
using System.Text.RegularExpressions;
internal class Program
{
private static void Main()
{
var test_lines = new[]
{
"Я сегодня съела 2 булочки, 7 сосисок и выпила 3 чашки кофе.",
"Старший брат родился в 1990 году, а младший - в 2000г.",
"Мне нравится книга '100 лет одиночества'"
};
foreach (var test_line in test_lines)
{
Console.WriteLine(test_line);
Console.WriteLine("Самое большое число в строке {0} или {1}", FindMaxNumber(test_line), FindMaxNumberWithRegex(test_line));
}
Console.WriteLine();
Console.WriteLine("Введите строку");
var line = Console.ReadLine();
Console.WriteLine("Самое большое число в строке {0} или {1}", FindMaxNumber(line), FindMaxNumberWithRegex(line));
Console.ReadKey();
}
private static int FindMaxNumberWithRegex(string line)
{
var matches = Regex.Matches(line, @"[0-9]+"); //находим все вхождения цифр в строку, не зависимо от того часть это слова или нет
if (matches.Count < 1) return -1;
var max = -1; //предполагаем что ищем лишь положительные числа
foreach (Match match in matches)
{
var num = int.Parse(match.Value); //переводим строку в число, то что это число мы уже знаем
max = Math.Max(max, num);
}
return max;
}
private static int FindMaxNumber(string line)
{
var words = line.Split(new[] { ' ', ',', '.', '-', ':' }, StringSplitOptions.RemoveEmptyEntries);//разбивает строку на массив строк
var max = -1; //предполагаем что ищем лишь положительные числа
foreach (var word in words)
{
if (int.TryParse(word, out var num) && num > max) //если слово есть число и оно больше максимума
{
max = num;
}
}
return max;
}
}