问题描述
- 使用Delphi如何解决字符串分割的问题
-
有一条字符串 'a1-a3,b5/f2,f4-f7/c9' ,我想得到的结果是:a1 a2 a3 b5 f2 f4 f5 f6 f7 c9. 难度挺大的,不知哪位老师能帮忙解决下。先谢了!
解决方案
代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
i,j,k:integer;
begin
S1:=Edit1.text;
S2:='';
for i:= 1 to length(S1) do
begin
if i=1
then begin
k:=0;
for j:=i to length(S1) do
begin
if (S1[j]='/') or (S1[j]=',') or (S1[j]='-') then
begin
k:=j;
Break;
end;
end;
if K>0 then S2:=Copy(S1,1,K-1);
end
else begin
if (S1[i-1]='/') or (S1[i-1]=',') or (S1[i-1]='-') then
begin
k:=0;
for j:=i to length(S1) do
begin
if (S1[j]='/') or (S1[j]=',') or (S1[j]='-') then
begin
k:=j;
Break;
end;
if (J=length(S1)) and (K=0) then k:=J+1;
end;
if K>0 then S2:=S2+' '+Copy(S1,i,K-i);
end;
end;
end;
Edit2.Text:=S2;
end;
支持“、”“,”“-”分隔的任何位数字符串的转换。
解决方案二:
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
i,j,k:integer;
begin
S1:=Edit1.text;
S2:='';
for i:= 1 to length(S1) do
begin
if i=1
then begin
k:=0;
for j:=i to length(S1) do
begin
if (S1[j]='/') or (S1[j]=',') or (S1[j]='-') then
begin
k:=j;
Break;
end;
end;
if K>0 then S2:=Copy(S1,1,K-1);
end
else begin
if (S1[i-1]='/') or (S1[i-1]=',') or (S1[i-1]='-') then
begin
k:=0;
for j:=i to length(S1) do
begin
if (S1[j]='/') or (S1[j]=',') or (S1[j]='-') then
begin
k:=j;
Break;
end;
if (J=length(S1)) and (K=0) then k:=J+1;
end;
if K>0 then S2:=S2+' '+Copy(S1,i,K-i);
end;
end;
end;
Edit2.Text:=S2;
end;
解决方案三:
非常感谢:【lyhoo163】老师的指导,已帮助解决了大部分问题。还想请教一下老师,对a1-a3的中间部分如何进行判断添加,形成更加完整的数据。再次表示感谢!!!
解决方案四:
提供的代码,可以处理a1-a3
解决方案五:
提供的代码,可以处理a1-a3
解决方案六:
提供的代码,可以处理a1-a3
解决方案七:
提供的代码,可以处理a1-a3
解决方案八:
已解决了所有问题,非常感谢!顺祝: 新年愉快!!