以','分隔符取出a bb cc eeeee af adsfg ...放到数组里面
不知道用什么方法能快速的解决这个问题,
分隔符可以用','或者'|'、';'等等
9 个解决方案
#1
循环赋值,应该没什么好方法吧
#2
procedure TForm1.Button1Click(Sender: TObject);
var
SL:TStringList;
begin
SL:=TStringList.Create;
with SL do
begin
DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
Delimiter:=',';
//这时SL[0]就是aa,SL[1]就是bbb,以此类推
Free;
end;
end;
var
SL:TStringList;
begin
SL:=TStringList.Create;
with SL do
begin
DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
Delimiter:=',';
//这时SL[0]就是aa,SL[1]就是bbb,以此类推
Free;
end;
end;
#3
var
s : string;
i : integer;
VstringL : strings;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
vstringL := TStringList.create;
while s<>'' do
begin
i := pos(',',s);
vstringL.add(copy(s,1,i-1));
delete(s,1,i);
end;
end;
s : string;
i : integer;
VstringL : strings;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
vstringL := TStringList.create;
while s<>'' do
begin
i := pos(',',s);
vstringL.add(copy(s,1,i-1));
delete(s,1,i);
end;
end;
#4
var
s: string;
i: integer;
VstringL: array of string;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
i := 0;
while pos(',', s) > 0 do begin
setlength(VstringL, i + 1);
VstringL[i] := copy(s, 1, pos(',', s) - 1);
delete(s, 1, pos(',', s));
inc(i);
end;
//for i := 0 to length(VstringL) - 1 do
// showmessage(VstringL[i]);
end;
s: string;
i: integer;
VstringL: array of string;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
i := 0;
while pos(',', s) > 0 do begin
setlength(VstringL, i + 1);
VstringL[i] := copy(s, 1, pos(',', s) - 1);
delete(s, 1, pos(',', s));
inc(i);
end;
//for i := 0 to length(VstringL) - 1 do
// showmessage(VstringL[i]);
end;
#5
alexanda2000(Delphi2005,好用 ^_^)的方法棒极了
#6
zsjzwj(北极熊) 的方法把saj漏了
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通
#7
DELPHI 当中最好用也是用得最为广泛的是TSTRINGS而不是C或C++当中的数组
可以将字符串拆分成TSTRINGS类型的函数
ExtractStrings
可以将字符串拆分成TSTRINGS类型的函数
ExtractStrings
#8
唔,,不错,不错!
#9
我从来不敢用Copy和Delete的组合来分隔。
其实:
var
SL:TStrings;
begin
SL:=TStringList.Create;
SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;
其实CommaText就是逗号的,所以说,一句话就够了。
其实……,用DelimitText要比Copy+Delete函数要好。
其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……
我都是自己写的函数,直接用指针……
唉…… 这年头的孩子,不仔细看源代码啊……
其实:
var
SL:TStrings;
begin
SL:=TStringList.Create;
SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;
其实CommaText就是逗号的,所以说,一句话就够了。
其实……,用DelimitText要比Copy+Delete函数要好。
其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……
我都是自己写的函数,直接用指针……
唉…… 这年头的孩子,不仔细看源代码啊……
#1
循环赋值,应该没什么好方法吧
#2
procedure TForm1.Button1Click(Sender: TObject);
var
SL:TStringList;
begin
SL:=TStringList.Create;
with SL do
begin
DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
Delimiter:=',';
//这时SL[0]就是aa,SL[1]就是bbb,以此类推
Free;
end;
end;
var
SL:TStringList;
begin
SL:=TStringList.Create;
with SL do
begin
DelimitedText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
Delimiter:=',';
//这时SL[0]就是aa,SL[1]就是bbb,以此类推
Free;
end;
end;
#3
var
s : string;
i : integer;
VstringL : strings;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
vstringL := TStringList.create;
while s<>'' do
begin
i := pos(',',s);
vstringL.add(copy(s,1,i-1));
delete(s,1,i);
end;
end;
s : string;
i : integer;
VstringL : strings;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
vstringL := TStringList.create;
while s<>'' do
begin
i := pos(',',s);
vstringL.add(copy(s,1,i-1));
delete(s,1,i);
end;
end;
#4
var
s: string;
i: integer;
VstringL: array of string;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
i := 0;
while pos(',', s) > 0 do begin
setlength(VstringL, i + 1);
VstringL[i] := copy(s, 1, pos(',', s) - 1);
delete(s, 1, pos(',', s));
inc(i);
end;
//for i := 0 to length(VstringL) - 1 do
// showmessage(VstringL[i]);
end;
s: string;
i: integer;
VstringL: array of string;
begin
s := 'a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj,';
i := 0;
while pos(',', s) > 0 do begin
setlength(VstringL, i + 1);
VstringL[i] := copy(s, 1, pos(',', s) - 1);
delete(s, 1, pos(',', s));
inc(i);
end;
//for i := 0 to length(VstringL) - 1 do
// showmessage(VstringL[i]);
end;
#5
alexanda2000(Delphi2005,好用 ^_^)的方法棒极了
#6
zsjzwj(北极熊) 的方法把saj漏了
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通
而且应该VstringL : tstringlist;
估计VstringL : strings;行不通
#7
DELPHI 当中最好用也是用得最为广泛的是TSTRINGS而不是C或C++当中的数组
可以将字符串拆分成TSTRINGS类型的函数
ExtractStrings
可以将字符串拆分成TSTRINGS类型的函数
ExtractStrings
#8
唔,,不错,不错!
#9
我从来不敢用Copy和Delete的组合来分隔。
其实:
var
SL:TStrings;
begin
SL:=TStringList.Create;
SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;
其实CommaText就是逗号的,所以说,一句话就够了。
其实……,用DelimitText要比Copy+Delete函数要好。
其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……
我都是自己写的函数,直接用指针……
唉…… 这年头的孩子,不仔细看源代码啊……
其实:
var
SL:TStrings;
begin
SL:=TStringList.Create;
SL.CommaText:='a,bbb,cc,eeeee,af,adsfg,ffh,dei,saj';
end;
其实CommaText就是逗号的,所以说,一句话就够了。
其实……,用DelimitText要比Copy+Delete函数要好。
其实Classes.pas里面的ExtractStrings就是个不错的函数,还可以同时弄很多分隔符,缺点是太通用,可能影响效率……
我都是自己写的函数,直接用指针……
唉…… 这年头的孩子,不仔细看源代码啊……