DELPHI的萬用字元比較 (轉)
的萬用字元比較
作者:李均宇 e: ">e271828@163.net或者server2000@163.com">MSSQLserver2000@163.com或者
DELPHI的功能比VB強是公認的,但在一些小事小節上卻有時比不上VB方便,例如VB中有SENDKEY()可以很方便地模擬鍵盤按鍵,但在DELPHI中就比較繁些.又如VB中有LIKE來輕易實現萬用字元的比較,但在DELPHI中卻找不到,為此在處於自由狀態下的我尚有心情時便自已動手來作一個自定義的來實現這個功能,以防應急時無心情再作這種小.這種小程式束之高閣無用,不如拿出來讓它發出幾分光和熱.
程式的演算法先在子串的末尾加上‘?*’,再讀取子串,查詢子串中的萬用字元之間的字元,亦即子串中的子串,然後在源串中依次查詢是否含有子串中的子串,不過實現起來還是十分費些周折.
function isABClikeAX(abc,ax:string):boolean; 是源串,ax是子串
var
abcstart,axstart,abclength,axlength:integer;
endpartabc,endpartax,subax:string;
temp,abcwww,axwww:integer;
begin
temp:=0;
abcstart:=1;
axstart:=1;
axwww:=1;
abcwww:=1;
abclength:=length(abc);
axlength:=length(ax);
isabclikeax:=true;
while axstart<=axlength do
begin//bbb
if ax[axstart]='?' then
begin
inc(axstart);
inc(abcstart);
if abcstart> abclength then
begin
isabclikeax:=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)+'?*';
subax:=copy(endpartax,1,min(pos('?',endpartax),pos('*',endpartax))-1);
axstart:=axstart+min(pos('?',endpartax),pos('*',endpartax))-1;
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
if temp=1 then temp:=0;
abcstart:=abcstart+(pos(subax,endpartabc)+length(subax)-1) ;
// axstart:=axstart+min(pos('?',endpartax),pos('*',endpartax))-1;
end
else
begin
if temp=0 then
begin
axstart:=axwww;
abcwww:=abcwww+1;
abcstart:=abcwww;
temp:=1;
continue;
end;
isabclikeax:=false;
break;
end;
end;//ccc
end;//bbb
end;//aaa
FUNCTION islike(abc,ax:string):boolean;
begin
islike:=isABClikeAX(abc,ax);
end;
FUNCTION wcard(abc,ax:string):boolean;
begin
widecard:=isABClikeAX(abc,ax);
end;
注意USES MATH,因為用到MIN(),也可以用IF語句來代替MIN(),但不夠明白.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- excel 字元比較函式Excel字元函式
- JavaScript 比較相同的字元返回falseJavaScript字元False
- 從Delphi到Lazarus——Delphi轉換器
- 前端比較實用的CSS前端CSS
- 字串大小寫轉換和字串的比較字串
- C#比較兩個字串的相似度【轉】C#字串
- Python2轉Python3比較Python
- 有哪些比較實用的全球http代理HTTP
- Integer的比較
- 推薦|免費ssl萬用字元證書https萬用字元證書平臺,價效比超高的證書字元HTTP
- js 深比較和淺比較JS
- Go和Python比較的話,哪個比較好?GoPython
- 比較適用的js日期物件定義方式JS物件
- Linux中11個比較實用的命令列Linux命令列
- 集合類的比較
- delphi:string,PChar,Array of Char 之間的轉換
- UFDoble型別計算、比較大小。BigDecimal轉UFDouble型別Decimal
- Prometheus thanos Victoriametrics比較 victoria prometheus 區別 轉載Prometheus
- Ubuntu萬用字元的使用Ubuntu字元
- Oracle date 型別比較和String比較Oracle型別
- 推薦幾款比較實用的工具,網站網站
- Python3 - 用Shell萬用字元匹配字串Python字元字串
- 字串比較字串
- Integer比較
- 比較集合
- 效能比較
- 比較典的莫比烏斯反演
- BootStrap, React, Vue的比較bootReactVue
- iOS 版本號的比較iOS
- 幾種排序的比較排序
- 比較重要的例題
- ==和equals方法的比較
- volatile與Atomic的比較
- 浮點數的比較
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- Java的BigDecimal比較大小JavaDecimal
- 轉義字元字元
- 字元反轉字元