a:=0;
while a:=pos(s,'-') do
begin
  s:=copy(s,1,a-1)+copy(s,a+1,length(s)-a)
end;

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var  s, tempstr : string;
        i:integer;
    begin
      s:='111-222-333';
      tempstr:='';
      for i:=1 to Length(s) do
        if s[i]='-' then
          begin
            showmessage(tempstr);
            tempstr:='';
          end
        else
            tempstr:=tempStr + s[i];
      if tempstr<>'' then
         showmessage(tempstr);
    end;
      

  2.   

    Procedure GetStrings( src : String; strList : TStringList );
    Var nstart : Integer;
    Begin
      nstart := Pos( '-', src );
      If nstart = 0 then strList.Add( src )
      Else Begin
        strList.Add( Copy( src, 1, nStart - 1 ) );
        Delete( src, 1, nStart );
        GetStrings( src );
      End;
    End;
      

  3.   

    var
    i:integer;
    str,substr:string;
    begin
      str:='song-dog-e4tt';
      i:=pos(str,'-');
      str:=copy(str,i+1,length(str));
      i:=pos(str,'-');
      substr:=copy(str,0,i-1) ;
    end;
      
    end;
      

  4.   

    如果是','则有最简单的办法:
    Var
      TStrings t;
    Begin
      t := TStringList.Create;
      t.CommaText := 'a,b,c,d';
      //  现在,t.Strings[0]即为'a',t.Strings[1]为'b',以此类推
      t.Free;
    End;
    注意此方法对空格等也有效