From WikiChip
Difference between revisions of "mirc/identifiers/$isnumber"
< mirc‎ | identifiers

(Synopsis)
Line 1: Line 1:
 
{{mirc title|$isnumber Identifier}}'''$isnumber''' Returns $true if text is a number, otherwise returns $false.
 
{{mirc title|$isnumber Identifier}}'''$isnumber''' Returns $true if text is a number, otherwise returns $false.
 +
 +
'''Note''': switches affects the range number parameters, see the examples
 +
 
== Synopsis ==
 
== Synopsis ==
 
<source lang="mIRC">
 
<source lang="mIRC">
$isnumber(text,[snd],[I],[J])</source>
+
$isnumber(text,[snd],[I,J])</source>
 +
 
  
 
== Parameters ==
 
== Parameters ==
'''text''' - The input string to be checked<br />
+
* '''text''' - The input string to be checked<br />
'''csend''' - Switches which expand the types of numbers accepted, multiple switches allowed. Default accepts only integers >= 0
+
* '''[snd]''' - Switches allowing for number to be preceded by +- sign and accepting floats
 +
** '''s''' - also permits +- sign to be used
 +
** '''n''' - default, when no switches are used. Accepts text consisting of digits only
 +
** '''d''' - also permits the decimal, allowing numbers with fractions
 +
 
 
== Properties ==
 
== Properties ==
 
None
 
None
 +
 
== Example ==
 
== Example ==
 
<source lang="mIRC">//echo -a $isnumber(564)</source>
 
<source lang="mIRC">//echo -a $isnumber(564)</source>
Line 18: Line 27:
 
will return '''$false''' because not all the character are digit
 
will return '''$false''' because not all the character are digit
  
<pre>//var %a 1.23e+45 | echo -a $isnumber(%a,e) vs $isnumber(%a,ed)</pre>
 
result: $false vs $true (because presence of the decimal requires 'd' or 'c' switch)
 
  
 
<pre>//var %a -123 | echo -a $isnumber(%a) vs $isnumber(%a,s)</pre>
 
<pre>//var %a -123 | echo -a $isnumber(%a) vs $isnumber(%a,s)</pre>
result: $false vs $true (using a sign requires 's' or 'c')
+
result: $false vs $true (using a sign requires 's')
 
 
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.
 
 
 
<pre>
 
//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</pre>
+
<pre>//echo -a $isnumber(3,d,2.1,4) vs $isnumber(3,2.1,4)</pre>
 +
result:$false vs error, the d switches is required not only to allow decimal in the input, but in each range parameter as well
  
<pre>//var -s %a $lower($crc(LFAX,0)) | echo -a %a is $isnumber(%a,c)</pre>
 
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 ==
 
== Compatibility ==
 
{{mIRC compatibility|7.58}}
 
{{mIRC compatibility|7.58}}
 
== See also ==
 
== See also ==
 
* {{mIRC|$calc}}
 
* {{mIRC|$calc}}

Revision as of 18:21, 17 February 2022

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

Note: switches affects the range number parameters, see the examples

Synopsis

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


Parameters

  • text - The input string to be checked
  • [snd] - Switches allowing for number to be preceded by +- sign and accepting floats
    • s - also permits +- sign to be used
    • n - default, when no switches are used. Accepts text consisting of digits only
    • d - also permits the decimal, allowing numbers with fractions

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 -123 | echo -a $isnumber(%a) vs $isnumber(%a,s)

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

//echo -a $isnumber(3,d,2.1,4) vs $isnumber(3,2.1,4)

result:$false vs error, the d switches is required not only to allow decimal in the input, but in each range parameter as well

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