Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.02;
Скачать: CL | DM;

Вниз

Сравнение по маске   Найти похожие ветки 

 
Pirate ©   (2004-04-16 09:11) [0]

Есть некая маска (Как в поиске windows) состоящая из:
*-неизвестное кол-во неизвестных символов,
?-1 неизвестный сомвол,
#-одна неизвестная цифра,
и некоторого текста.
Чтото вроде "*вася##фарева?"
и есть ещё строчка- вроде "йцукен(вася45фарева)".
Нужно проверить релевантность строчки к маске.
rel("qwerty*","*rt?")=true
rel("qwery*","*rt?")=false

сколко мучался- не смог.
Может есть аналог функции? Например в бейсике-
function like(s1,s2:string);


 
Anatoly Podgoretsky ©   (2004-04-16 09:26) [1]

MatchesMask


 
Alx2 ©   (2004-04-16 10:28) [2]

>Pirate ©   (16.04.04 09:11)  

Накидал что-то.
Но еще много работы по оптимизации. И особо не тестировал.
Интересно узнать, работает ли она? :))


 Function MathesMask(Const Mask, Sample: String): Boolean;
 Var
   LenMask, LenSample: Integer;

   Function Like(idx, idxSample: Integer): Boolean;

     Function AnySymbol: Boolean;
     Begin
       Result := True;
     End;

     Function AnyDigit: Boolean;
     Begin
       Result := Sample[idxSample] In ["0".."9"];
     End;

   Begin
     Result := (idx > LenMask) And (idxSample > LenSample);
     If Not result Then
       Begin
         Result := (idxSample <= LenSample) And (idx <= LenMask);
         If Result Then
           Case Mask[idx] Of
             "*":
               Result := (Idx = LenMask) Or
                 Like(idx + 1, idxSample + 1) Or
                 ((idxSample < LenSample) And Like(idx, idxSample + 1));
             "?": Result := AnySymbol And Like(idx + 1, idxSample + 1);
             "#": Result := AnyDigit And Like(idx + 1, idxSample + 1);
             Else
               Result := (Mask[idx] = Sample[idxSample]) And Like(idx + 1, idxSample + 1);
           End;
       End;

   End;

 Begin
   LenMask := Length(mask);
   LenSample := Length(Sample);
   Result := (Mask <> "") And Like(1, 1);
 End;



Страницы: 1 вся ветка

Текущий архив: 2004.05.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
14-1081765401
Dmitriy O.
2004-04-12 14:23
2004.05.02
Кто имел опыт по размещению рекламы на своем сайте ?


3-1081277285
neVIP
2004-04-06 22:48
2004.05.02
Как лечить Cannot modify


14-1081438044
TButton
2004-04-08 19:27
2004.05.02
Мониторинг сети


7-1078652833
kamerad
2004-03-07 12:47
2004.05.02
Подскажите о мониторе!


1-1082025258
Flahas
2004-04-15 14:34
2004.05.02
exel v dbgrid...