程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 下的通配符查找函數

Delphi 下的通配符查找函數

編輯:Delphi

//Delphi 下的通配符查找函數

Function IsLike(ax, abc: String): Boolean; //ax是子串,abc是源串
Var
  abcstart, axstart, abclength, axlength: Integer;
  endpartabc, endpartax, subax: String;
  temp, abcwww, axwww: Integer;
Begin //aaa
  temp := 0;
  abcstart := 1;
  axstart := 1;
  axwww := 1;
  abcwww := 1;
  ax:=LowerCase(ax);
  abc:=LowerCase(abc);
  abclength := Length(abc);
  axlength := Length(ax);
  result := True;
  While axstart <= axlength Do Begin //bbb
    If ax[axstart] = '?' Then Begin
      inc(axstart);
      inc(abcstart);
      If abcstart > abclength+1 Then Begin
        result := false;
        Break;
      End;
      Continue;
    End;
    If ax[axstart] = '*' Then Begin
      inc(axstart);
      temp := 1;
      axwww := axstart;
      abcwww := abcstart;
      Continue;
    End;
    If Not (ax[axstart] In ['?', '*']) Then Begin //ccc
      endpartax := Copy(ax, axstart, axlength - axstart + 1) + '?*';
      If Pos('?', endpartax) < Pos('*', endpartax) Then Begin
        subax := Copy(endpartax, 1, Pos('?', endpartax) - 1);
        axstart := axstart + Pos('?', endpartax) - 1;
      End
      Else Begin
        subax := Copy(endpartax, 1, Pos('*', endpartax) - 1);
        axstart := axstart + Pos('*', endpartax) - 1;
      End;
      endpartabc := Copy(abc, abcstart, abclength - abcstart + 1);
      If ((Pos(subax, endpartabc) <> 0) And (temp = 1)) Or ((Pos(subax, endpartabc) = 1) And (temp = 0)) Then Begin //ddd
        If temp = 1 Then temp := 0;
        abcstart := abcstart + (Pos(subax, endpartabc) + Length(subax) - 1);
      End
      Else  Begin //ddd
        If temp = 0 Then Begin
          axstart := axwww;
          abcwww := abcwww + 1;
          abcstart := abcwww;
          temp := 1;
          Continue;
        End;
        result := false;
        Break;
      End; //ddd
    End; //ccc
  End; //bbb
End; //aaa


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved