Архив за 21 апреля 2008

Apr21

Разбиение строки на подстроки

Когда я начинал изучение PHP, мне, после Delphi, понравилась одна функция - explode. Ее работа очень проста - разбить строку на подстроки. В Delphi, до этого, я делал примерно следующее:

var

  sl: TStringList;

begin

  sl := TStringList.Create;

  try

    sl.Text := 'str1, str2, str3, str4, str5';

    sl.Delimiter := ',';

    // тут обрабатываем sl.Items

  finally

    sl.Free;

  end;

end;

Все бы хорошо, но... Что делать, если разделителей несколько? Например, как разбить такую строку:

language: russian; delphi, php, c++; Ivanov

и получить следующее:

language: russian

delphi

php

c++

Ivanov

Да, можно, конечно, разбить строку, а потом разбивать подстроки. Можно использовать регулярки. Но, как я уже писал - я противник использования, для таких случаев, регулярных выражений. Да и рекурсию/множество циклов использовать не люблю. И, как оказалось, не только я. В Delphi есть стандартная функция для разбиения строки на подстроки, совсем как в PHP :) .

Читать далее »

Apr21

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

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

Читать далее »