偶写的一个Split函数,其它语言中好多都有的] //参数str:原始字符串 //参数delimiter:分隔符 //返回值:数组 function Split(const str: string; const delimiter: string = ','): Variant; var strTemp: string; p: Integer; Value: array of string; begin strTemp := str; if Copy(strTemp, Length(strTemp), 1) <> delimiter then strTemp := strTemp + delimiter;
p := Pos(delimiter, strTemp); while p > 0 do begin setlength(Value, Length(Value) + 1); Value[High(Value)] := Copy(strTemp, 1, p-1); strTemp := Copy(strTemp, p + 1, Length(strTemp) - p); p := Pos(delimiter, strTemp); end; Result := Value; end;
tls:TStringList; i:Integer;tls:=TStringList.Create; try tls.Text:=StringReplace('ab/wer/354/sdf','/',#13#10,[rfReplaceAll]); for i:=0 to tls.Count-1 do begin ShowMessage(tls.String[i]); end; finally tls.Free; end;
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; str: string; i: integer; begin str := '1/2/3/4/5/'; sl := TStringList.Create; ExtractStrings(['/'], [], PChar(str), sl); for i:=0 to sl.Count-1 do ShowMessage(sl[i]); FreeAndNil(sl); end;
//参数str:原始字符串
//参数delimiter:分隔符
//返回值:数组
function Split(const str: string; const delimiter: string = ','): Variant;
var
strTemp: string;
p: Integer;
Value: array of string;
begin
strTemp := str;
if Copy(strTemp, Length(strTemp), 1) <> delimiter then
strTemp := strTemp + delimiter;
p := Pos(delimiter, strTemp);
while p > 0 do
begin
setlength(Value, Length(Value) + 1);
Value[High(Value)] := Copy(strTemp, 1, p-1);
strTemp := Copy(strTemp, p + 1, Length(strTemp) - p); p := Pos(delimiter, strTemp);
end;
Result := Value;
end;
i:Integer;tls:=TStringList.Create;
try
tls.Text:=StringReplace('ab/wer/354/sdf','/',#13#10,[rfReplaceAll]);
for i:=0 to tls.Count-1 do
begin
ShowMessage(tls.String[i]);
end;
finally
tls.Free;
end;
var
sl: TStringList;
str: string;
i: integer;
begin
str := '1/2/3/4/5/';
sl := TStringList.Create;
ExtractStrings(['/'], [], PChar(str), sl);
for i:=0 to sl.Count-1 do
ShowMessage(sl[i]);
FreeAndNil(sl);
end;
这个方法最简单