type TArray = array of string;procedure TrimChar(s:string;var sRet : TArray); function CountChar(s:string; c:char):integer; var i : integer; begin result := 0; for i := 1 to Length(s) do if s[i] = c then Inc(result); end; var iPos : integer; i : integer;begin SetLength(sRet, CountChar(s, ' ') + 1); iPos := Pos(' ', s); i := 0; while iPos > 0 do begin sRet[i] := Copy(s, 1, iPos - 1); Delete(s, 1, iPos); iPos := Pos(' ', s); Inc(i); end; sRet[i] := s; end; procedure TForm1.Button1Click(Sender: TObject); var sA : TArray; s : string; i : integer; begin s := 'abc,cd,mm,44'; sA := nil; TrimChar(s, sA); for i := Low(sA) to High(sA) do Memo1.Lines.Add(sA[i]); end;
var list:Tstrings; i:integer; begin list:=TStringlist.Create; list.CommaText:='123 2342 sdaf'; list.Delimiter:=' '; for i:=0 to list.Count-1 do showmessage(list.Strings[i]); end;
procedure TForm1.Button1Click(Sender: TObject); var slist: TStringList; begin sList:= TStringList.Create; SplitStr('123 2342 sdaf' ,sList); memo1.Text:= sList.Text; slist.Free; end;//以空格为分隔符 procedure SplitStr(str: string; var sList: TStringList); var tmpStr: String; i: integer; begin if sList = nil then exit; sList.Clear; str:= Trim(Str); str:= str+ ' '; tmpStr:=''; for i:= 1 to Length(str) do begin if str[i] = ' ' then begin sList.Add(tmpStr); tmpStr:= ''; end else tmpStr:= tmpStr + str[i]; end; end;
用POS查找空格,在用COPY截字符串就解决了
LikeVCL(小刘) : I am a man, I am a mature man. 你是MM吗?
procedure TForm1.Button1Click(Sender: TObject); var s:string; i:integer; t:boolean; begin s:='123 2342 sdaf'; t:=true; while t do begin if pos(' ',s)<>0 then begin showmessage(copy(s,1,pos(' ',s)-1)); s:=copy(s,pos(' ',s)+1,length(s)); end else begin showmessage(s); t:=false; end; end;end;to 小刘 我真受不了你了 :)
较我的前一个精简的 procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=trim('123 2342 sdaf')+' '; while pos(' ',s)>0 do begin showmessage(copy(s,1,pos(' ',s)-1)); s:=copy(s,pos(' ',s)+1,length(s)); end; end;
TArray = array of string;procedure TrimChar(s:string;var sRet : TArray);
function CountChar(s:string; c:char):integer;
var
i : integer;
begin
result := 0;
for i := 1 to Length(s) do
if s[i] = c then Inc(result);
end;
var
iPos : integer;
i : integer;begin
SetLength(sRet, CountChar(s, ' ') + 1);
iPos := Pos(' ', s);
i := 0;
while iPos > 0 do
begin
sRet[i] := Copy(s, 1, iPos - 1);
Delete(s, 1, iPos);
iPos := Pos(' ', s);
Inc(i);
end;
sRet[i] := s;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sA : TArray;
s : string;
i : integer;
begin
s := 'abc,cd,mm,44';
sA := nil;
TrimChar(s, sA);
for i := Low(sA) to High(sA) do
Memo1.Lines.Add(sA[i]);
end;
list:Tstrings;
i:integer;
begin
list:=TStringlist.Create;
list.CommaText:='123 2342 sdaf';
list.Delimiter:=' ';
for i:=0 to list.Count-1 do
showmessage(list.Strings[i]);
end;
回复人: LikeVCL(小刘) ( ) 信誉:96 2004-01-08 12:19:00 得分:0
珏心,我爱你
----------------------------------------------------------------------
LikeVCL(小刘) :诶也!!!!吃饭嘞!!!好啦,白吃了!!
顺便问,who are you?
var slist: TStringList;
begin
sList:= TStringList.Create;
SplitStr('123 2342 sdaf' ,sList);
memo1.Text:= sList.Text;
slist.Free;
end;//以空格为分隔符
procedure SplitStr(str: string; var sList: TStringList);
var tmpStr: String;
i: integer;
begin
if sList = nil then exit; sList.Clear;
str:= Trim(Str);
str:= str+ ' ';
tmpStr:='';
for i:= 1 to Length(str) do
begin
if str[i] = ' ' then
begin
sList.Add(tmpStr);
tmpStr:= '';
end
else tmpStr:= tmpStr + str[i]; end;
end;
I am a man,
I am a mature man.
你是MM吗?
var s:string;
i:integer;
t:boolean;
begin
s:='123 2342 sdaf';
t:=true;
while t do
begin
if pos(' ',s)<>0 then
begin
showmessage(copy(s,1,pos(' ',s)-1));
s:=copy(s,pos(' ',s)+1,length(s));
end
else
begin
showmessage(s);
t:=false;
end; end;end;to 小刘
我真受不了你了
:)
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=trim('123 2342 sdaf')+' ';
while pos(' ',s)>0 do
begin
showmessage(copy(s,1,pos(' ',s)-1));
s:=copy(s,pos(' ',s)+1,length(s));
end;
end;
这一句好象LIST没有这个属性啊
是可以的