字符串的问题?(30分)

V

victor

Unregistered / Unconfirmed
GUEST, unregistred user!
请问谁有"好"办法解决下面的问题:
有一个字符串:
a:='1 9 134 0 234 34...'
"..."表示下面还有。
字符串里全是数字,
现在想把它全部分开,变成单个的数字,

b:=1;
c:=9;
d:=134;
...
有好办法吗?
 
L

liuws

Unregistered / Unconfirmed
GUEST, unregistred user!
如果只有数字和空格的话不很容易么。
 
V

victor

Unregistered / Unconfirmed
GUEST, unregistred user!
关键是数字长度不一样,
办法说出来听听?
 
Z

zzw

Unregistered / Unconfirmed
GUEST, unregistred user!
一般来说,可以先在字符串后加一空格,再如下循环:
var i,j,k:integer;s1:string;intarr:array[1..10]of integer;
J;=1;
while length(s)<>0 do
begin
i:=pos(' ',s);
s1:=copy(s,1,i-1);
val(s,a[j],k);
delete(s,1,i);
end;
pos,val函数有点忘了,请自己查一下
 
J

jiangtao

Unregistered / Unconfirmed
GUEST, unregistred user!

这种代码总得自己写吧?

var
tempStr:string;
aInt:Integer;

While(True)
begin
tempStr:=RemoveFirstWord(s,' ');
if tempStr <> nil then
aInt:=StrToInt(tempStr)
else
begin
aInt:=StrToInt(s);
//add you code here,
exit

end
end;

function RemoveFirstWord(var S: string;SubStr:string): string;
var
i,Size: Integer;
begin
i:= Pos(SubStr,S);
if i=0 then
begin
Result := nil;
exit;
end;
result:=Copy(S,1,i-1);
Size:= (Length(S)-i);
Move(S[i+1],S[1],Size);
SetLength(S,Size);
end;



 
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
我想了一个简省的方法。效果不错。
===============================
procedure TForm1.Button1Click(Sender: TObject);
var f : TextFile;
i : integer;
myStr : string;
myArr : Array[1..5] of integer;
begin
myStr := '1 9 134 0 234 34';
AssignFile(f,'c:/myTemp.txt');
rewrite(f);
writeln(f,myStr);

reset(f);
for i := 1 to 5 do
begin
read(f,myArr);
button1.Caption := button1.Caption + '/' + inttostr(myArr);
end;

CloseFile(f);
deletefile('c:/myTemp.txt');
end;
======================================================
你可以用eof()方法来判定文件尾,就可以读出所有变量来了。
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
各位老兄:

看来你们都不知道Delphi的TStrings(or TStringList)有一个CommaText的属性,
他可以将一个字符串按照空格或逗号分隔成单个的String作为TStrings的Item, 实
例如下:

function TForm1.GetValue(index: integer): integer;
var
Strings1: TStrings;
begin
Strings1:=TStrings.create;
Strings1.CommaText:='1 9 134 0 234 34';
if (index < Strings1.Count) and (index>=0) then
result:=StrToInt(Strings1.Items[Index])
else
result:=0;
Strings1.free;
end;

 
顶部