function SplitString(Source, Deli: string ): TStringList;stdcall;
var
EndOfCurrentString: byte;
StringList:TStringList;
begin
StringList:=TStringList.Create;
while Pos(Deli, Source)>0 do
begin
EndOfCurrentString := Pos(Deli, Source);
StringList.add(Copy(Source, 1, EndOfCurrentString - 1));
Source := Copy(Source, EndOfCurrentString + length(Deli), length(Source) - EndOfCurrentString);
end;
Result := StringList;
StringList.Add(source);
end;
本文来自CSDN博客:http://blog.csdn.net/mahuzi/archive/2005/10/13/502563.aspx
分割函数2:
function SplitString(pString:Pchar;psubString:PChar):TStringList;
var
nSize,SubStringSize:DWord;
intI,intJ,intK:DWORD;
ts:TStringList;
curChar:Char;
strString:string;
strsearchSubStr:string;
begin
nSize:=strLen(pString);
SubStringSize:=strLen(PSubString);
ts:=TStringList.Create;
strstring:='';
inti:=0;
while intI<=(nSize-1) do
begin
if (nsize-inti)>= substringSize then
begin
if ((PString+intI)^=pSubString^) then
begin
intk:=inti;
strSearchSubStr:='';
curchar:=(pstring+intk)^;
strsearchSubStr:=strSearchSubStr+Curchar;
intk:=intk+1;
for intj:= 1 to SubStringSize-1 do
begin
if ((pString+intk)^=(PSubString+intj)^) then
begin
curchar:=(pstring+intk)^;
intk:=intk+1;
strsearchSubStr:=strSearchSubStr+Curchar;
end
else begin
inti:=intk;
strString:=strString+strSearchSubStr;
break; //不匹配 退出FOR
end;
end;
if (intJ=substringSize) or (SubStringSize=1) then
begin
inti:=intk;
ts.add(strstring);
strstring:='';
end;
end
else begin
curChar:=(pString+inti)^;
strstring:=strstring+curchar;
inti:=inti+1;
end;
if inti=nsize then
begin
ts.Add(strString);
strString:='';
end;
end
else begin //将剩下的字符给作为一个字符串复制给字符串集合
strString:=strstring+string(pString+inti);
ts.Add(strstring);
inti:=nsize;
end;
end;
Result:=ts;
end;
分割函数3:
function split(src,dec : string):TStringList;
var
i : integer;
str : string;
begin
result := TStringList.Create;
repeat
i := pos(dec,src);
str := copy(src,1,i-1);
if (str='') and (i>0) then
begin
delete(src,1,length(dec));
continue;
end;
if i>0 then
begin
result.Add(str);
delete(src,1,i+length(dec)-1);
end;
until i<=0;
if src<>'' then
result.Add(src);
end;
说明:函数2的效率最高,函数3次之,函数1效率最低。函数2采用指针来实现,因此,效率最高。当字符串很大时,函数3和函数1基本就到了无法忍受的地步了。
此文章由 http://www.ositren.com 收集整理 ,地址为:
http://www.ositren.com/htmls/69860.html