From WikiChip
$isnumber Identifier - mIRC
< mirc‎ | identifiers
Revision as of 16:59, 17 February 2022 by Ouims (talk | contribs) (Synopsis)

$isnumber Returns $true if text is a number, otherwise returns $false.

Synopsis

$isnumber(text,[snd],[I],[J])

Parameters

text - The input string to be checked
csend - Switches which expand the types of numbers accepted, multiple switches allowed. Default accepts only integers >= 0

Properties

None

Example

//echo -a $isnumber(564)

will return $true

//echo -a $isnumber(abcdefG)

will return $false because not all the character are digit

//var %a 1.23e+45 | echo -a $isnumber(%a,e) vs $isnumber(%a,ed)

result: $false vs $true (because presence of the decimal requires 'd' or 'c' switch)

//var %a -123 | echo -a $isnumber(%a) vs $isnumber(%a,s)

result: $false vs $true (using a sign requires 's' or 'c')

Note: Most users would probably want to use some/all of the 'sdn' switches if there's a risk the string can contain of unwanted false matches with some hex strings triggering a match as if they're using scientific notation, and also because it has a partial subset of unexpected utf8 codepoints matching as if numeric. The next 2 examples shows that the 'c' switch matches 170 UTF8 codepoints, while using \d with $regex's /u switch matches 370.

//var %i 1 , %a | while (%i isnum 1-65535) { if ((%i !isnum 55296-57343) && ($isnumber($chr(%i),c))) var %a %a %i | inc %i } | echo -ag %a : $numtok(%a,32) tokens

//var %i 1 , %a | while (%i isnum 1-65535) { if ((%i !isnum 55296-57343) && ($regex($chr(%i),/^\d$/u))) var %a %a %i | inc %i } | echo -ag %a : $numtok(%a,32) tokens
//var -s %a $lower($crc(LFAX,0)) | echo -a %a is $isnumber(%a,c)

result: 08436e69 is $true Recognizes this hex string as numeric because the number following the lowercase 'e' is not large enough to prevent $calc(8436*10^69) to be larger than approx 2^1023.99.

Compatibility

Added: mIRC v7.58
Added on: 17 Nov 2019
Note: Unless otherwise stated, this was the date of original functionality.
Further enhancements may have been made in later versions.

See also