delphi中,一个字符串“11*18”或者“1.5*700”或者“250*300”,这里的a*b中,a和b的长度不定,如何提取*前面的字符串和*后面的字符串?使这一个字符串分成两个字符串?

解决方案 »

  1.   

    两种
    一种是根据*分隔符,用Tstringlist分成数组
    另外一种copy及pos,length 的结合使用
      

  2.   


    var
      a,b,str:string;
      i:integer;
    begin
      str := 'dfdfd*advc';
      i := Pos('*',str);
      ShowMessage(Copy(str,1,i-1));
      ShowMessage(Copy(str,i+1,Length(str)-i));
    end;
      

  3.   

    谢谢bdmh,想请教一下MKD,你说的第一种方法是如何实现呢?我不是太会,麻烦详细点好吗?
      

  4.   

    第一种方法:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: integer;
      str: TStringList;
    begin
      str := TStringList.Create;
      try
        str.Delimiter := '*';
        str.DelimitedText := '11*18';
        for i:=0 to str.Count-1 do
          showmessage(str[i]);
      finally
        str.Free;
      end;
    end;
      

  5.   

    var
      a,b,str:string;
      i:integer;
    begin
      str := 'abc*def';
      a :=Copy(str, 1, Pos('*',str) -1);
      System.Delete(str, 1, Pos('*', str));
    end;結果是a = abc
         str = def