function GetNumFromStr(const str: String;const hex:boolean=false): String; var i:integer; charset:Set of char; begin if hex then charset:=['0'..'9','a'..'f','A'..'F','.'] else charset:=['0'..'9','.']; for i := 1 to Length(str) do begin if (str[i] in charset) then result:= result + uppercase(str[i]); end; end;可以取得十六进制的数字!可以包含小数点,但你必须保证只有一个小数点!
type charstr :array[0..10] of char var charstr1:charstr; i,m:integer; strnew;string begin charstr1:=charstr('0','1','2','3','4','5','6','7','8','9','.'); for i:=1 to length(str) do begin if (str[i] in charstr1) then strnew:=strnew + str[i]; end; m:=strtoint(strnew); end;
var I,Code:integer; begin val('20只/盒',I,code); //I即是提取的数字 end;
看了上面两位大虾的意见,自己小瞧了这个问题,便稍微改造了一下 var charstr: Set of char; i: integer; m: extended; strnew: string; str: string; begin charstr :=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.']; str := edit1.text; for i := 1 to length(str) do begin if (str[i] in charstr) then strnew := strnew + str[i]; end; showmessage(strnew); m := strtofloat(strnew); end; 不过都把字符串里的数字凑一起了,如果上面再添上用val(s,I,code)判断一下数字紧挨的字符,就可以将数字分开取出了,例如:“12.30元+20.00元”钟的12.30和20.00
没这么麻烦吧 procedure TForm1.Button2Click(Sender: TObject); var s,dig:string; i:integer; begin s:='23lsdfkkl'; dig:=''; for i:=0 to length(s) do if (ord(s[i])>=48)and(ord(s[i])<=57) then //判断是否数字 dig:=dig+s[i]; end;
var
i:integer;
charset:Set of char;
begin
if hex then
charset:=['0'..'9','a'..'f','A'..'F','.']
else
charset:=['0'..'9','.'];
for i := 1 to Length(str) do
begin
if (str[i] in charset) then
result:= result + uppercase(str[i]);
end;
end;可以取得十六进制的数字!可以包含小数点,但你必须保证只有一个小数点!
var charstr1:charstr;
i,m:integer;
strnew;string
begin
charstr1:=charstr('0','1','2','3','4','5','6','7','8','9','.');
for i:=1 to length(str) do
begin
if (str[i] in charstr1) then
strnew:=strnew + str[i];
end;
m:=strtoint(strnew);
end;
I,Code:integer;
begin
val('20只/盒',I,code);
//I即是提取的数字
end;
var
charstr: Set of char;
i: integer;
m: extended;
strnew: string;
str: string;
begin
charstr :=['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.'];
str := edit1.text;
for i := 1 to length(str) do
begin
if (str[i] in charstr) then
strnew := strnew + str[i];
end;
showmessage(strnew);
m := strtofloat(strnew);
end;
不过都把字符串里的数字凑一起了,如果上面再添上用val(s,I,code)判断一下数字紧挨的字符,就可以将数字分开取出了,例如:“12.30元+20.00元”钟的12.30和20.00
procedure TForm1.Button2Click(Sender: TObject);
var
s,dig:string;
i:integer;
begin
s:='23lsdfkkl';
dig:='';
for i:=0 to length(s) do
if (ord(s[i])>=48)and(ord(s[i])<=57) then //判断是否数字
dig:=dig+s[i];
end;