使用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

已解决了所有问题,非常感谢!顺祝: 新年愉快!!

逐一判断,不是在0-9,A-Z的字符用空格替代,结束