出150分来个小比赛(150分)

  • 主题发起人 主题发起人 Kofer
  • 开始时间 开始时间
K

Kofer

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个字符串用逗号隔开,比如aaa,bbb,ccc,ddd,eee
谁能用最少的代码把每个逗号相隔的字符串提取出来放到一个字符串数组中,谁就算赢。
最后的格式:strarr[0]=aaa,strarr[1]=bbb .......
注意,aaa,bbb,ccc.....这样的字符串个数是不限的,就是不一定是上面距离的5个,有可能是
更少或更多。
 
呵呵!这不难,先pos定位, 然后一段段截取即可!
 
不难没错,比的是"谁能用最少的代码实现"
 
又是最少代码实现,论坛不知玩过多少次了,可是每次都不了了之。
呵呵!分数我不敢兴趣,你有什么别的方法可以打动我呢?
 
呵呵,不敢兴趣可以不参加啊,我又没强迫你,我知道你分多,你还是忙你的吧。
 
procedure SplitStr(S,SplitChar: String
var Str: TStrings);
var
I,J:Integer;
begin
Str.Clear;
J:=Length(SplitChar);
I:=Pos(SplitChar,S);
while I>0 do
begin
Str.Add(Copy(S,1,I-1));
Delete(S,1,I+J-1);
I:=Pos(SplitChar,S);
end;
end;
 
修改一下
--------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Text:=SplitStr(Edit1.Text,',');
end;

Function TForm1.SplitStr(S,SplitChar: String):String;
var
I,J:Integer;
ReturnS:String;
begin
ReturnS:='';
J:=Length(SplitChar);
I:=Pos(SplitChar,S);
while I>0 do
begin
ReturnS:=ReturnS+Copy(S,1,I-1)+Chr(13)+Chr(10);
Delete(S,1,I+J-1);
I:=Pos(SplitChar,S);
end;
Result:=ReturnS+S;
end;
 
就剩下这几句,都差不多的样子。。[:(]

还可以减少吗?不要说是汇编哦。。
 
还有人出手吗。。。。
 
完整的就不写了,这个可以利用一下:
sl:TStringList
sl.CommaText:=……
然后 sl[0] sl[1] sl[2]]……
 
看看我的
var
I,J:Integer;
begin
for i := 1 to length(str) do
If str <> ',' then
statarr[j] := statarr[j]+ str
else j := j+1
end
 
改成这样还可以少一点点。
var
I,J:Integer;
begin

for i := 1 to length(str) do
If str = ',' then
j := j+1
else statarr[j] := statarr[j]+ str
end
 
procedure TForm1.Button1Click(Sender: TObject);
var
ss:TStrings;
i:integer;
begin
ss:=TStringList.Create;
ss.DelimitedText:=',';
ss.CommaText:='aaa,bbb,ccc,ddd,eee';
for i:=0 to ss.Count-1 do strarr:=ss.strings;
end;
 
不能再少了,给分吧。呵呵。[8D]
 
:tianhf的代码编译通不过;

datm的代码虽然比较少,但是不是一个完整的子程序,所以无法和zhihuali的代码比较。
谁是第一?????
 
我用的是delphi6,除了没有定义strarr数组之外,结果完全正确.
 
procedure GetStrings(const Value:String;var Strings:TStringList);
var
i,Len:integer;
Temp:String;
begin
Temp:='';
Strings:=TStringList.Create;
Len:=Length(Value);
for i:=1 to Len do
begin
if (Value<>',') and (i<>Len) then
temp:=Temp+Value
else
begin
Strings.Add(Temp);
Temp:='';
end;
end;
end;
 
var
tst:TStrings;
i:integer;
begin
tst:=TStringList.Create;
tst.CommaText:='aaa,bbb,ccc,ddd,eee';
for i := 0 to tst.Count - 1 do
strarr := tst;
tst.Free

end;
 
接受答案了.
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部