各位大虾:
    小弟有一问题请教,怎么样才能把字符串中的数字提取出来呀!用什么函数可以实现
列如:
    长江路255号 
  怎样提取它的‘255’
                               谢谢大虾了

解决方案 »

  1.   

    function astr(var s: string) : string;
    var
      i: Integer;
      temps : string;
    begin
      for i := Length(s) downto 1 do
      begin
        if s[i] in ['0'..'9'] then
        begin
          temps := temps + s[i];
        end;
      end;
    result := temps;
    end;
      

  2.   

    错了,应该吧for 那句换一下
    for i := 0 to length(s) -1 do
      

  3.   

    来一个玩玩!学伴水兄。function IsNum(c: char): Boolean;
    begin
      Result := AnsiPos(c, '0123456789') > 0; 
    end;
      

  4.   

    再玩一下,嘿嘿,好玩哦。function IsNum(c: char): Boolean;
    begin
      Result := (c >= #48) and (c <= #57); 
    end;
      

  5.   

    如果看不懂#,换一个。反正伴水。function IsNum(c: char): Boolean;
    begin
      Result := (ord(c) >= 48) and (ord(c) <= 57);
    end;
      

  6.   

    换个ID继续来,其实还是那样。哈哈。玩玩!function IsNum(c: char): Boolean;
    begin
      Result := (c >= chr(48)) and (c <= chr(57));
    end;
      

  7.   

    楼上某位老兄的。^_^function IsNum(c: char): Boolean;
    begin
      Result := (c in ['0'..'9']);
    end;
      

  8.   

    效率分析。第一个字符串Pos就不用说了,这个遍历效率最低。我的asc比较Unit1.pas.28: Result := (c >= #48) and (c <= #57);
    00401CDC 3C30             cmp al,$30 (c >= #48)
    00401CDE 7204             jb +$04
    00401CE0 3C39             cmp al,$39 (c <= #57)
    00401CE2 7603             jbe +$03
    00401CE4 33C0             xor eax,eax
    00401CE6 C3               ret 
    00401CE7 B001             mov al,$01
    Unit1.pas.32: end;天啊。需要这么多指令啊。最后集合操作。Unit1.pas.31: Result := (c in ['0'..'9']);
    00401CDC 04D0             add al,$d0
    00401CDE 2C0A             sub al,$0a
    00401CE0 0F92C0           setb al
    Unit1.pas.32: end;哇,三条指令就搞定了!!!!你还是用那个吧。
      

  9.   

    : boatzm(晓舟【塑料的玫瑰花】) 
      写得比较好,简单,易用。