delphi 下的通配符查找函数  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

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


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.056032180786133 seconds