Delphi中是否有方法检查字符串是否为数字而不引发异常?
它用于int解析.
如果一个人使用,则会引发异常
try
StrToInt(s);
except
//exception handling
end;
Run Code Online (Sandbox Code Playgroud)
ba_*_*end 59
function TryStrToInt(const S:string; out Value:Integer):Boolean;
TryStrToInt将字符串S(表示十进制或十六进制表示法的整数类型编号)转换为数字,该数字分配给Value.如果S不表示有效数字,则TryStrToInt返回false; 否则TryStrToInt返回true.
要在输入字符串中接受十进制但不是十六进制值,可以使用如下代码:
function TryDecimalStrToInt( const S: string; out Value: Integer): Boolean;
begin
result := ( pos( '$', S ) = 0 ) and TryStrToInt( S, Value );
end;
Run Code Online (Sandbox Code Playgroud)
da-*_*oft 24
var
s: String;
iValue, iCode: Integer;
...
val(s, iValue, iCode);
if iCode = 0 then
ShowMessage('s has a number')
else
ShowMessage('s has not a number');
Run Code Online (Sandbox Code Playgroud)
Bha*_*rat 16
试试这个功能 StrToIntDef()
从帮助
将表示整数(十进制或十六进制表示法)的字符串转换为具有错误默认值的数字.
帕斯卡尔
function StrToIntDef(const S: string; Default: Integer): Integer;
Run Code Online (Sandbox Code Playgroud)
编辑
刚刚检查了TryStrToInt()
Delphi 2007中的函数源.如果Delphi 7没有这个函数,你可以像这样写.它只是一个完美的代码,以达到轻柔的答案
function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
E: Integer;
begin
Val(S, Value, E);
Result := E = 0;
end;
Run Code Online (Sandbox Code Playgroud)
XE4 及更新版本:
for ch in s do
TCharacter.IsNumber(ch);
Run Code Online (Sandbox Code Playgroud)
不要忘记:
uses System.Character
Run Code Online (Sandbox Code Playgroud)