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

(Synopsis)
 
(5 intermediate revisions by the same user not shown)
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,[sd],[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
+
* '''s''' - also permits +- sign to be used
 +
* '''d''' - also permits the decimal, allowing numbers with fractions
 +
* '''[I,J]''' - If you pass a third and fourth parameters, they must be valid number (with respect to the switches used) and are used to validate the number in a range.
 +
 
 
== Properties ==
 
== Properties ==
 
None
 
None
 +
 
== Example ==
 
== Example ==
 
<source lang="mIRC">//echo -a $isnumber(564)</source>
 
<source lang="mIRC">//echo -a $isnumber(564)</source>
Line 16: Line 24:
 
<source lang="mIRC">//echo -a $isnumber(abcdefG)</source>
 
<source lang="mIRC">//echo -a $isnumber(abcdefG)</source>
  
will return '''$false''' because not all the character are digit
+
will return '''$false''' because not all the characters are digits
  
<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}}
 +
* {{mIRC|$isnum}}

Latest revision as of 23:58, 16 August 2022

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

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

Synopsis[edit]

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


Parameters[edit]

  • text - The input string to be checked
  • s - also permits +- sign to be used
  • d - also permits the decimal, allowing numbers with fractions
  • [I,J] - If you pass a third and fourth parameters, they must be valid number (with respect to the switches used) and are used to validate the number in a range.

Properties[edit]

None

Example[edit]

//echo -a $isnumber(564)

will return $true

//echo -a $isnumber(abcdefG)

will return $false because not all the characters are digits


//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[edit]

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[edit]