有如下字符串:
80 20 0 0 0 //要求分别取出80,20这两个整数
95 5 0 0 0 //要求分别取出95,5 这两个数
100 0 0 0 0 //要取出100
5 95 0 0 0 //5,95
像这种有没有什么好的方法?用空格来判断的话,怎么知道前面的到底是几位数?(80,95,100,5)
各位帮帮忙,主要是空格前后的数字位数不是确定的!!!
80 20 0 0 0 //要求分别取出80,20这两个整数
95 5 0 0 0 //要求分别取出95,5 这两个数
100 0 0 0 0 //要取出100
5 95 0 0 0 //5,95
像这种有没有什么好的方法?用空格来判断的话,怎么知道前面的到底是几位数?(80,95,100,5)
各位帮帮忙,主要是空格前后的数字位数不是确定的!!!
i: integer;
begin
sl := TStringList.Create;
sl.Delimiter := ' ';
sl.DelimitedText := '80 20 0 0 0';
for i:= 0 to sl.Count - 1 do
if sl[i]<>'0' then
ShowMessage(sl[i]);
sl.Free;
end;
t:tstringlist;
i,j:integer;
begin
t:=tstringlist.Create;
t.DelimitedText:='80 20 0 0 0'; //要求分别取出80,20这两个整数
//t的Strings分别为80,20,0,0,0
i:=StrToInt(t.Strings[0]);
j:=StrToInt(t.Strings[1]);
Edit1.Text:=IntToStr(i);
Edit2.Text:=IntToStr(j);
//其它的同理
自己写了个循环,功能一样可以实现: bl为(95 5 0 0 0)字符串
k,l,a初始值为0
for k:=K+l+1 to length(bl) do //分解用水类型比例
begin
if bl[k]<>' ' then //以空格作为标志,直到出现第一个空格,取空格前面的所有字符
l:=l+1 //L为要取的字符串的个数
else
begin
bll:=copy(bl,a,l); //A为要拷贝的起始位数
break;
end;
end;
l:=0; a:=k+1; //第二次循环时从空格下一位开始拷贝