Удалить из строки все последовательности идущих подряд цифр, образующие числа большие 315 - PascalABC.NET
Формулировка задачи:
У меня есть программа, которая меняет цифру на следующую по порядку ( 9 меняет на 0 )
Подскажите, как удалить все последовательности идущих подряд цифр, образующие числа большие 315.
Допустим: 15gd300v2743g--->26gd300vg
Решение задачи: «Удалить из строки все последовательности идущих подряд цифр, образующие числа большие 315»
textual
Листинг программы
function f(m : Match) : string; begin result := StrToInt(m.Value) > 315 ? '' : new string(m.Value.ToCharArray().Select(ch -> ch in ['0' .. '8'] ? Succ(ch) : '0').ToArray()) end; begin var s : string := '19gd300v2743g'; writeln(Regex.Replace(s, '(\d+)', f)); end.
Объяснение кода листинга программы
- Объявлена функция
fс типом возвращаемого значенияstring. - В функции используется анонимная функция-предикат для проверки условия
StrToInt(m.Value) > 315. - Результатом функции
fявляется пустая строка'', если условие истинно, иначе — новая строка, полученная с помощью функцииnew string(...). - В основной части кода определена переменная
sсо значением'19gd300v2743g'. - В строку
sвставляется результат вызова функцииRegex.Replace, в качестве первого аргумента которой используется строка'(\d+)', а вторым аргументом — функцияf.