DELPHI 如何去掉非数字的字符串

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:01:06
比如,我有一串字符串:5423434334?【】kp,我要去掉后面所有非数字的字符串“?【】kp”,只保留数字“5423434334”该如何操作?另外,前面数字的位数不是固定的。有可能才3位,也有可能很多位,例如5423434334542343499??【】。请高手帮忙

简单一点,不使用正则表达式就可以实现。
procedure TForm1.Button2Click(Sender: TObject);
var
n,i :integer;
begin
n:=length(edit1.Text);
for i :=1 to n do
if not (edit1.Text[i] in ['0'..'9']) then
begin
edit1.Text :=copy(edit1.Text,1,i-1);
exit;
end;
end;

使用正则表达式对象就可以实现

//显示找到的第一个
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := '5423434334?【】kp';
reg.RegEx := '\d+';

if reg.Match then
ShowMessage(reg.MatchedExpression)
else
ShowMessage('没有数字');

FreeAndNil(reg);
end;

procedure TForm1.Button1Click(Sender: TObject);
function GetNumberOnly(AStr: String): String;
var
i: integer;
s: string;
begin
result := '';
if AStr = '' then Exit;
for i := 1 to Length(AStr) do