高手们好,我做的一个程序是有客户端和服务器端,客户端从服务器端接收到的数据 AllData:='001,jj,男,24,
2011-11-23 10:20:22',我想用分隔符以逗号的形式分开,结果‘2011-11-23 10:20:22’之间的空格也分开了 我用的是TStringList list3
list3.Delimiter:=',';
list3.DelimitedText:=trim(AllData);
最终结果‘2011-11-23 10:20:22’也分成了两段 怎么样才能不分开 谢谢了
2011-11-23 10:20:22',我想用分隔符以逗号的形式分开,结果‘2011-11-23 10:20:22’之间的空格也分开了 我用的是TStringList list3
list3.Delimiter:=',';
list3.DelimitedText:=trim(AllData);
最终结果‘2011-11-23 10:20:22’也分成了两段 怎么样才能不分开 谢谢了
或者,先把空格替换为下划线再分割
不过这会出现问题,就是多个空格,最后变成一个空格;如:
s:='@@XXOO@@';
list3.DelimitedText:=stringreplace(AllData,' ',s,[rfReplaceAll]);
for i:=0 to list3.count-1 do
showmessage(stringreplace(list3.strings[i],s,' ',[rfReplaceAll]));不想这样的话,也可以使用pos,copy截取
function GetStringN(Astring:String;Dlmter:Char;nPos:integer):string;
var
s:string;
num,k,i:integer;
begin
Result:='';
s :='';
num:=0;
i:=0;
k:=0;
while (k<>1) and (i<length(Astring)) do
begin
if (Astring[i]=dlmter) then
begin
num:=num+1;
if (num=nPos) then
k:=1
else
s:='';
end
else
s:=s+Astring[i];
i:=i+1;
end;
Result:=s;
end;
try
SS_Delimit.Text := StringReplace(AllData, ',', #13#10, [rfReplaceAll]); //把逗号替换成回车换行符
if SS_Delimit.Count = 5 then
begin
S_1 := SS_Delimit[0];
S_2 := SS_Delimit[1];
S_3 := SS_Delimit[2];
S_4 := SS_Delimit[3];
S_5 := SS_Delimit[4];
end;
finally
SS_Delimit.Free;
end;
它修正了TStrings.DelimitedText和TStrings.Delimiter将空格也作为分隔符的问题
SplitColumns
uses IdStrings;
var
s : string;
sl : TStringList;
i : Integer;
begin
s := '001,jj,男,24,2011-11-23 10:20:22';
sl :=TStringList.Create;
SplitColumns(s,sl,',');
for i:=0 to sl.Count-1 do
ShowMessage(sl.Strings[i]);
sl.Free;
end;
结果符合你的需要,如下:
name
sex
age
2011-12-9 15:36:40TStringList中的默认的QuoteChar值为"
所以当你把日期的首尾用QuoteChar界定后,就不会在空格处被分割了