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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DELPHI的萬用字元比較(第五版) (轉)字元
- JavaScript 比較相同的字元返回falseJavaScript字元False
- Delphi中字串比較大小 VS Oracle-SQL中字串比較大小字串OracleSQL
- mysql字元型別varchar()比較MySql字元型別
- 關於Oracle字元型別的比較Oracle字元型別
- java位元組流和字元流的比較哦啊Java字元
- GML、SVG、VML的比較 (轉)SVG
- 比較perl模組的版本(轉)
- 流行語言的比較 (轉)
- Linux萬用字元(轉)Linux字元
- 前端比較實用的CSS前端CSS
- 分享一種比較萬能的居中方式
- Hibernate與 MyBatis的比較(轉)MyBatis
- 比較 python & perl(轉)Python
- 比較實用的js集錦JS
- 比較實用的選股技巧
- Oracle與SQL Server在企業應用中的比較(轉)OracleSQLServer
- Visual C++與Delphi/C++Builder之比較 (轉)C++UI
- ASP.NET 與 JAVA 的比較 (轉)ASP.NETJava
- Linux Shell 萬用字元、元字元、轉義符使用Linux字元
- 用Delphi編寫DelTree程式 (轉)
- 用DELPHI開發DirectX遊戲 (轉)遊戲
- (轉)ORACLE 中IN和EXISTS比較Oracle
- Closure的應用和替代方案比較
- Oracle將字元編碼從GBK轉到UTF8,如何操作比較穩妥?Oracle字元
- 用PHP連mysql和oracle資料庫效能比較(轉)PHPMySqlOracle資料庫
- Python解惑:整數比較 is ==的比較Python
- 裸裝置、字元裝置、塊裝置不全面比較字元
- 字串大小寫轉換和字串的比較字串
- Perl程式與c程式速度的比較(轉)C程式
- 比較四種主要的Linux版本(轉)Linux
- 【轉載】webservice框架xfire和axis的比較Web框架
- 有哪些比較實用的全球http代理HTTP
- Linux運維比較實用的工具Linux運維
- 樹形控制元件比較 (轉)控制元件
- 用Delphi處理公曆到農曆的轉換 (轉)
- 推薦|免費ssl萬用字元證書https萬用字元證書平臺,價效比超高的證書字元HTTP
- js 深比較和淺比較JS