寻求一段关于string的简单代码!!!(50分)

  • 主题发起人 主题发起人 yuanzhucn
  • 开始时间 开始时间
Y

yuanzhucn

Unregistered / Unconfirmed
GUEST, unregistred user!
type myarray=array[0..10] of string;
我现在需要一个这样的过程:
change(str:string,var ccc:myarray,var count:integer)
其中的第一个参数str是一个以逗号分隔的字符串,比如: 'zuu,zb,zx'
我的过程要实现的是把str从逗号处分割开,然后把由c数组返回分开后的每个子字符串,
而count则返回子字符串的个数.
比如:
str:='zuu,zb,zx'
则调用过程后:
c[0]='zuu'
c[1]='zb'
c[2]='zx'
count=3
 
procedure Change(const str: string
var ccc: myarray
var count: Integer);
var
b, e: Integer;
begin
Count := 0;
b := 1;
e := 1;
while e <= length(str) do
begin
if str[e] = ',' then
begin
ccc[Count] := copy(str, b, e-b);
inc(Count);
b := e + 1;
end;
inc(e);
end;
if b < e then
begin
ccc[Count] := copy(str, b, e-b);
inc(Count);
end;
end;
 
用ReplaceAll函数将所有逗号换为#13#10, 然后a:TStrings .... 别忘记了创建,
a.Text := 替换后的字符串,
这下好了,从a[0]到a[a.Count -1]就是你要的字符串数组, a.Count就是个数呀.
 
type myarray=array[0..10] of string;

procedure SplitString(str:string;var c:myarray;var count:integer);
var
s:TStrings;
i:integer;
begin
s:=TStringList.Create;
s.CommaText:=str;
count:=s.Count;
for i:=0 to count-1 do c:=s;
s.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
c:MyArray;
i,count:integer;
begin
str:='zuu,zb,zx';
splitString(str,c,count);
showmessage(inttostr(count));
for i:=0 to count-1 do showmessage(c);
end;
 
var
S : String;
L : TStrings;
I : Integer;
begin
L := TStringList.Create;
try
S := Edit1.Text;
S := StringReplace(S, ',', #$0D#$0A, [rfReplaceAll]);
L.Text := S;

for I := 0 to L.Count-1 do
ShowMessage(L);

finally
L.Free;
end;
end;
 
procedure TForm1.chang(str:string;var ccc:myarray;var count:integer);
var
i,j:integer;
s,c:string;
begin
s:=trim(str);
if pos(',',s)=1 then //第一个字母是,
s:=copy(s,2,length(s)-1);
if copy(s,length(s)-1,1)=',' then //最後一个字母是,
s:=copy(s,1,length(s)-1);
count:=0;
for i:=1 to length(s) do
begin
c:=copy(s,i,1);
if c=',' then
inc(count);
end;
for j:=0 to count do
begin
if (pos(',',s)=0) and (length(s)>0) then
begin
ccc[j]:=s;
s:='';
end
else
begin
ccc[j]:=copy(s,1,pos(',',s)-1);
delete(s,1,pos(',',s));
end;
end;
end;
 
好了谢谢 大家,问题解决了
 
后退
顶部