procedure TForm1.Button1Click(Sender: TObject);var i:integer; s,s1:string; begin s := 'hyue20030325'; s1 := ''; for i := 1 to Length(s) do begin if s[i] in ['0'..'9'] then s1 := s1 + s[i]; end;end;
function GetNumFromStr(const Str: String; const Hex: boolean = false): String; var I: Integer; Have: Boolean; Charset: Set of Char; begin if Hex then Charset:=['0'..'9','a'..'f','A'..'F','.'] else Charset:=['0'..'9','.']; Have := false; for I := 1 to Length(Str) do begin if (Str[I] in Charset) then begin Result := Result + UpperCase(Str[I]); Have := true; end else begin if Have then Exit; end; end; end;
上面给的一个不是很爽的,给出这一个吧procedure GetNumFromStr(const Str: String;ReturnTerms: TStringList; const Hex: boolean = false ); var I: Integer; S: String; Have: Boolean; Charset: Set of Char; begin if Hex then Charset:=['0'..'9','a'..'f','A'..'F','.'] else Charset:=['0'..'9','.']; ReturnTerms.Clear; // 清除所有的terms S := ''; Have := false; for I := 1 to Length(Str) do begin if (Str[I] in Charset) then begin S := S + UpperCase(Str[I]); Have := true; end else begin if Have then ReturnTerms.Add(S); Have := false; S := ''; end; end; if Have then ReturnTerms.Add(S); end;{Demo}procedure TForm1.BitBtn1Click(Sender: TObject); var Terms : TStringList; I: Word; begin Terms:=TStringList.Create; GetNumFromStr(edit1.text, Terms, true); if Terms.Count >0 then for I := 0 to Terms.Count -1 do ShowMessage(Terms.Strings[I]); Terms.Free; end;
i:integer;
s,s1:string;
begin
s := 'hyue20030325';
s1 := '';
for i := 1 to Length(s) do
begin
if s[i] in ['0'..'9'] then
s1 := s1 + s[i];
end;end;
var
I: Integer;
Have: Boolean;
Charset: Set of Char;
begin
if Hex then
Charset:=['0'..'9','a'..'f','A'..'F','.']
else
Charset:=['0'..'9','.'];
Have := false;
for I := 1 to Length(Str) do
begin
if (Str[I] in Charset) then
begin
Result := Result + UpperCase(Str[I]);
Have := true;
end else begin
if Have then Exit;
end;
end;
end;
var
I: Integer;
S: String;
Have: Boolean;
Charset: Set of Char;
begin
if Hex then
Charset:=['0'..'9','a'..'f','A'..'F','.']
else
Charset:=['0'..'9','.'];
ReturnTerms.Clear; // 清除所有的terms
S := '';
Have := false;
for I := 1 to Length(Str) do
begin
if (Str[I] in Charset) then
begin
S := S + UpperCase(Str[I]);
Have := true;
end else begin
if Have then ReturnTerms.Add(S);
Have := false;
S := '';
end; end;
if Have then ReturnTerms.Add(S);
end;{Demo}procedure TForm1.BitBtn1Click(Sender: TObject);
var
Terms : TStringList;
I: Word;
begin
Terms:=TStringList.Create;
GetNumFromStr(edit1.text, Terms, true);
if Terms.Count >0 then
for I := 0 to Terms.Count -1 do
ShowMessage(Terms.Strings[I]);
Terms.Free;
end;
你这个字符串,比如hyue20030325,末尾是一个日期格式,可以这么
StrToInt(RightStr('hyue20030325', 8))呵呵,如果是hyue20030325hyue20030325要取出其中的数字就可能要用List了。