如何检测字符串是否包含浮点数。例如:'0.004'
但是没有使用StrToFloat
,因为该函数很慢,而是通过迭代迭代。
function IsInteger(const S: String): Boolean;
var
P: PChar;
begin
P := PChar(S);
Result := True;
while not (P^ = #0) do
begin
case P^ of
'0'..'9': Inc(P);
else
Result := False;
Break;
end;
end;
end;
这将检查字符串是否为正整数但不是浮点数。
答案 0 :(得分:6)
我会使用TryStrToFloat():
if TryStrToFloat(str, value, FormatSettings) then
....
如果您准备使用默认的系统范围格式设置,则可以省略最终参数:
if TryStrToFloat(str, value) then
....
答案 1 :(得分:2)
你能在这里使用RegEx吗?类似的东西:
([+-]?[0-9]+(?:\.[0-9]*)?)
答案 2 :(得分:0)
这个问题的问题在于说“太慢”并不能说明问题。探查者告诉你什么?您对输入数据有一个明智的想法吗?那么不同的符号呢,例如6.02e23
?
如果你的输入数据主要是噪音,那么使用正则表达式(如here所述)可能会改善一些事情,但只能作为第一个过滤器。然后,您可以添加第二步以实际获取您的号码,如David's answer所述。