Удалить из строки все последовательности идущих подряд цифр, образующие числа большие 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д