type
TCharSet = setof Char;
function StripNonConforming(const S: string;
const ValidChars: TCharSet): string;
var
DestI: Integer;
SourceI: Integer;
begin
SetLength(Result, Length(S));
DestI := 0;
for SourceI := 1 to Length(S) doif S[SourceI] in ValidChars thenbegin
Inc(DestI);
Result[DestI] := S[SourceI]
end;
SetLength(Result, DestI)
end;
function StripNonNumeric(const S: string): string;
begin
Result := StripNonConforming(S, ['0'..'9'])
end;
Here is a translation of the provided text into Russian:
Предоставленный код на языке Pascal предназначен для удаления несовместимых символов из заданного входного строки. Функция StripNonConforming принимает два параметра: входную строку и множество допустимых символов. Она проходит по входной строке, и если текущий символ находится в множестве допустимых символов, она включает этот символ в выходную строку.
Функция StripNonNumeric является примером использования StripNonConforming, где она удаляет все нецифровые символы из входной строки, установив множество допустимых символов в цифры '0' до '9'.
Вот как можно улучшить этот код:
Обработка ошибок: Код не обрабатывает случаи, когда входная строка null или пустая. Вам может потребоваться добавить проверки этих условий в начале каждой функции.
Организация кода: Функция StripNonConforming могла быть сделана более универсальной, если бы вызывающий программист мог указать буфер назначения вместо динамического увеличения результата. Это также позволило бы более эффективному обрабатыванию в случаях, когда входная строка очень большая.
Функциональность: Если вы хотите удалить несовместимые символы из обоих концов строки, вам может потребоваться добавить эту функциональность в функцию StripNonConforming или создать новую функцию, которая делает это.
Вот альтернативное решение с использованием регулярных выражений:
function StripNonNumeric(const S: string): string;
begin
Result := TRegExpr.QuoteMeta('^\D+|\D+$');
Result := RegExReplace(S, Result, '');
end;
В этом коде используется класс TRegExpr из единицы RegExpr, чтобы заменить все нецифровые символы в начале и конце входной строки на пустую строку. Регулярное выражение ^\D+|\D+$ matches one or more non-numeric characters at the beginning or end of the string, effectively stripping them away.
Данная статья описывает функции на языке Delphi для удаления из строки нечисленных символов и оставления только цифр.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.