16,748
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
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.
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;