5-6-3 5-10-2怎么补足2位,补足加0,批量改成05-06-03  05-10-02

解决方案 »

  1.   


    function MyStrFunc(const AStr:string):string;
    var
      i:integer;
      s:string;
    begin
      s:='';
      result:='';
      for i:=1 to length(AStr) do
      begin
        if AStr[i] in ['0'..'9'] then
          s:=s+AStr[i]
        else begin
          if s<>'' then
          begin
            if length(s)>2 then s:=Copy(s,1,2);
            result:=result+FormatFloat('00',StrToInt(s))+AStr[i];
            s:='';
          end;
        end;
      end;
      if s<>'' then result:=result+FormatFloat('00',StrToInt(s));
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      //edit1.Text:='5-6-3 5-10-2';
      edit2.text:=MyStrFunc(edit1.text);
    end;
      

  2.   

    format(%0.2d,5)
      

  3.   

    先以空格 split大组,然后以'-' split小组,对小组每个项格式化,再组合成字符串:
    unit Unit1;interfaceuses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;type
      TForm1 = class(TForm)
        edt1: TEdit;
        lbl1: TLabel;
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btn1Click(Sender: TObject);
    var
      sText: string;
      sArr, sArr1: TArray<string>;
      i,j: Integer;
    begin
      sText := Trim(edt1.Text);
      sArr := sText.Split([' ']);
      if Length(sArr) > 0 then
      begin
        for i := Low(sArr) to High(sArr) do
        begin
          sArr1 := sArr[i].Split(['-']);
          if Length(sArr1) > 0 then
          begin
            for j := Low(sArr1) to High(sArr1) do
            begin
              sArr1[j] := sArr1[j].Trim;
              sArr1[j] := FormatFloat('00', StrToIntDef(sArr1[j],0));
              //sArr1[j] := s1;
            end;
            sArr[i] := string.Join('-', sArr1);
          end;
        end;
        lbl1.Caption := string.Join(' ', sArr);
      end;
    end;end.