字符串分割函数
作者:admin 日期:2010-03-14
Delphi代码
- DELPHI没有自己的字符串分割函数,所以只能程序员自己写了,网上搜了好多但是真正好用的没有几个,
- 下面这个是我在网上找到修改后了的,个人感觉算法不错,所以就贴了上来。
- {第一种方法 }
- function SplitString(Source, Deli: string ): TStringList;stdcall;
- var
- EndOfCurrentString: byte; //Deli是分割符号
- 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;
- {第二种方法 }
- type
- userarray=array of string;
- function split(s:string;dot:char):userarray;
- var
- str : userarray;
- i,j : integer;
- begin
- i:=1;
- j:=0;
- SetLength(str, 255);
- while Pos(dot, s) > 0 do //Pos返回子串在父串中第一次出现的位置.
- begin
- str[j]:=copy(s,i,pos(dot,s)-i);
- i:=pos(dot,s)+1;
- s[i-1] := chr(ord(dot)+1);
- j:=j+1;
- end;
- str[j]:=copy(s,i,strlen(pchar(s))-i+1);
- result:=str;
- end;
- {第二种方法 }
- function StringToWords(const sString, Token: string): TStringList;var sTmp: string; iPos: Integer; Toklen: Integer;begin Toklen := Length(Token); Result := TStringList.Create; sTmp := sString; iPos := Pos(Token, sTmp); while iPos <> 0 do begin Result.Add(Copy(sTmp, 1, iPos - 1)); Delete(sTmp, 1, iPos - 1 + Toklen); iPos := Pos(Token, sTmp); end; Result.Add(sTmp);end;
- 使用案例:
- var
- iField :integer;
- lStrList :TStringList;
- begin
- lStrList := TStringList.Create;
- with ClientDataSet1 do
- for iField := 0 to FieldCount -1 do
- begin
- lStrList := StringToWords(Fields[iField].FieldName,';');
- end;
- end;







