Apr 21

Сравнение строки с маской

Иногда возникает необходимость сравнить строку с каким-то шаблоном, например соответствует ли домен (http://delphist.ru) маске доменов в зоне .ru? Подобную задачу можно решить многими способами, начиная от того, что в ручную проверять посимвольно, заканчивая преминением регулярных выражений.

Но самый простой способ предоставляет сама Delphi:

uses

  Masks;

var

  lStr: string;

begin

  lStr := 'http://delphist.ru';

  if MatchesMask(lStr, 'http://*.ru') then

  begin

    // Тут обработка

  end;

end;

 

В маске можно использовать * (любое количество символов) и ? (один символ).

Да, данный способ не сравнится с регулярками, но это и не требуется для подобных задач.

 

P.S.: я вообще противник того, чтобы пременять регулярные выражение везде без разбора. Они хороши, когда надо обработать текст по каким-то сложным критериям, но в других случаях, по моему мнению, необходимо обходится стандартными средствами, без преминения сторонних компонентов и классов, а так же без дополнительной нагрузки к программе.


  1. egoiste
     Add karma Subtract karma  +0
    Цитировать.

    Полностья с вами согласен. Я вообще сторонник компактного и грамотного кода. Лишняя его нагрузка никчему

    1
  2. Defiler
     Add karma Subtract karma  +0
    Цитировать.

    Отличная статья.Респект автору.

    2
  3. Nosov
     Add karma Subtract karma  +0
    Цитировать.

    Довольно небезынтересный блог!

    3
  4. Олег
     Add karma Subtract karma  +0
    Цитировать.

    Хм… даже такое случается.

    4
  5. Слава
     Add karma Subtract karma  +0
    Цитировать.

    Спасибо. Несколько лет искал эту функцию))

    5

Поделитесь вашими мыслями



Ссылки в комментариях будут свободны от nofollow.

Поддерживаемые теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Ссылки в комментариях будут свободны от nofollow.

иван шишкин
-->