有没有直接取出字符串中的数字比如:hyue20030325得出的结果是20030325
大家遇到这个问题是如何解决的?

解决方案 »

  1.   

    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;
      

  2.   

    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;
      

  3.   

    上面给的一个不是很爽的,给出这一个吧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;
      

  4.   

    如果比较有规律的话,就没那么麻烦了
    你这个字符串,比如hyue20030325,末尾是一个日期格式,可以这么
    StrToInt(RightStr('hyue20030325', 8))呵呵,如果是hyue20030325hyue20030325要取出其中的数字就可能要用List了。