Well, like this:
var s = "тест|5 проверка|2 проверка"; Console.WriteLine( string.Concat( s.SkipWhile(c => c != '|') // пропустить первый сегмент .Skip(1) // попустить разделитель .TakeWhile(c => c != '|') // взять только второй сегмент .Where(char.IsDigit) // отфильтровать цифры .Select(c => int.Parse(c.ToString())) // перевести в числа .Where(n => n >= 5))); // отфильтровать те, которые не меньше пяти
For the case of returning a whole string, it's also simple:
var lines = new[] { "тест|5 проверка|2 проверка", "тест|1 проверка", "тест|5 проверка", "тест|4 проверка", "тест|8 проверка" }; Console.WriteLine(string.Join("\n", lines.Where( line => line.SkipWhile(c => c != '|') .Skip(1) .TakeWhile(c => c != '|') .Where(char.IsDigit) .Select(c => int.Parse(c.ToString())) .Any(n => n >= 5))));