Delphi - 如何从字符串中提取数字?

时间:2015-11-06 21:20:05

标签: regex string delphi

我正在开发一个程序来验证CPF,这是我国的一种文件。我已经完成了所有的数学运算。但是在输入Edit1中,用户将插入如下:

123.456.789-00

我必须得到的数字,没有连字符和点数,我的计算值得。

我是Delphi的新手,但我觉得这很简单。我怎样才能做到这一点?谢谢大家

2 个答案:

答案 0 :(得分:4)

您可以使用

text := '123.456.789-00'
text := TRegEx.Replace(text, '\D', '')

此处,\D匹配任何用空字符串替换的非数字符号。

结果为12345678900(请参阅regex demo)。

答案 1 :(得分:1)

使用David的建议,迭代输入字符串并删除不是数字的字符。

{$APPTYPE CONSOLE}

function GetNumbers(const Value: string): string;
var
  ch: char;
  Index, Count: integer;
begin
  SetLength(Result, Length(Value));
  Count := 0;      
  for Index := 1 to length(Value) do
  begin
    ch := Value[Index];
    if (ch >= '0') and (ch <='9') then
    begin
      inc(Count);
      Result[Count] := ch;
    end;
  end;
  SetLength(Result, Count);
end;

begin
  Writeln(GetNumbers('123.456.789-00'));
  Readln;
end.