Difference between revisions of "If-Then-Else"
(→isnum) |
(→isletter) |
||
Line 146: | Line 146: | ||
=== isletter === | === isletter === | ||
+ | |||
+ | if ($1 isletter) ;Returns true if ''$1'' is a letter, any letter | ||
+ | if ($1 isletter abcdefg) ;Returns true if ''$1'' is in the string of letters ''abcdefg'' | ||
+ | if ($1 isletter HelloWorld) ;Returns true if ''$1'' is in the string of letters ''HeloWrd'' | ||
+ | |||
+ | * Note that the checking is case-sensitive, the letter ''h'' will not return true if checked against the string ''HelloWorld''. | ||
+ | |||
=== isalnum === | === isalnum === | ||
=== isalpha === | === isalpha === |
Revision as of 13:10, 1 December 2005
The If-then-else statement allows you to compare values and execute different parts of a script based on that comparison.
if (v1 operator v2) { commands1 } elseif (v1 operator v2) { commands2 } else { commands3 }
If the first statement (line) is $true, commands inside the first brackets are executed. If the first if-statement returns $false, script starts looking for an elseif-statement. An elseif-statement is only triggered if the group's if-statement returned $false before. And at last, if none of the if or elseif statements were triggered, commands in else-statement are executed.
One if structure/group can consist of one main if-statement, after it there can be 0 .. N elseif-statements. There can be only one else, which can be understood as the default statement, if none one before were triggered. There doesn't need to be else-statement though.
Every if statement is handled separatly and none of others affect in another.
if (A) { ... } elseif (B) { if (C) { ... } elseif (D) { ... } elseif (E) { ... } else { F } } elseif (G) { ... } else { H }
If structure would be hierarchical represented it would look something like this
A If A is true, execute its commands and return B If B is true, \ C check if C, D or E returns true D E F If none of these got triggered, return F G G is checked only if A or B were not triggered H If none of previous wasn't matches, H is returned
Contents
- 1 The Operators
- 1.1 ==
- 1.2 !=
- 1.3 <
- 1.4 >
- 1.5 <=
- 1.6 >=
- 1.7 //
- 1.8 \\
- 1.9 &
- 1.10 isin
- 1.11 iswm
- 1.12 isnum
- 1.13 isletter
- 1.14 isalnum
- 1.15 isalpha
- 1.16 islower
- 1.17 isupper
- 1.18 ison
- 1.19 isop
- 1.20 ishop
- 1.21 isvoice
- 1.22 isreg
- 1.23 ischan
- 1.24 isban
- 1.25 isaop
- 1.26 isavoice
- 1.27 isignore
- 1.28 isprotect
- 1.29 isnotify
- 1.30 Notes
- 2 Combining comparisons
The Operators
== equal to === equal to (case-sensitive) != not equal to < less than > larger than >= less than or equal to >= larger than or equal to // v2 is a multiple of v1 \\ v2 is not a multiple of v1 & bitwise comparison isin string v1 is in string v2 isincs string v1 is in string v2 (case sensitive) iswm wildcard string v1 matches string v2 iswmcs wildcard string v1 matches string v2 (case sensitive) isnum number v1 is a number in the range v2 which is in the form n1-n2 (v2 optional) isletter letter v1 is a letter in the list of letters in v2 (v2 optional) isalnum text contains only letters and numbers isalpha text contains only letters islower text contains only lower case letters isupper text contains only upper case letters ison if v1 is on channel v2 isop if v1 is an op on channel v2 ishop if v1 is a halfop on channel v2 isvoice if v1 has a voice on channel v2 isreg if v1 is a normal nick on channel v2 ischan if v1 is a channel which you are on. isban if v1 is a banned address in internal ban list isaop if v1 is a user in your auto-op list for channel v2 (v2 optional) isavoice if v1 is a user in your auto-voice list for channel v2 (v2 optional) isignore if v1 is a user in your ignore list with the ignore switch v2 (v2 optional) isprotect if v1 is a user in your protect list for channel v2 (v2 optional) isnotify if v1 is a user in your notify list.
Note: To negate an operator you can prefix it with an exclamation mark (!).
==
if (cat == cAt) ;Returns true since == is case-insensitive. if (cat === cAt) ;Returns false since === is case-sensitive.
The above checks that v1 (cat) matches v2 (cAt).
!=
if (cat != cAt) ;Returns false since != is case-insensitive and both values v1 and v2 are equal. if (cat !== cAt) ;Returns true since !== is case-sensitive and both values v1 and v2 are not equal when case is taken in to consideration.
The != and !== operators are the negates of the == and === operators.
<
if (6 < 9) ;Returns true because the numerical value 6 is less than 9.
Checks that v1 (6) has a lower numerical value than v2 (9)
>
if (6 > 9) ;Returns false because the numerical value 6 is not greater than 9.
Checks that v1 (6) has a higher numerical value than v2 (9)
<=
if (6 <= 9) ;Returns true because the numerical value 6 is less than or equal to 9.
Checks that v1 (6) has a lower or equal numerical value than v2 (9).
>=
if (6 >= 9) ;Returns false because the numerical value 6 is not less than or equal to 9.
Checks that v1 (6) has a greater or equal numerical value than v2 (9).
//
if (3 // 9) ;Returns true because 3 is a multipul of 9.
Multipuls of 9 are numbers that when devided in to 9 result in an integer. You are not limited to positive numbers.
\\
if (3 \\ 9) ;Returns false because 3 is a multipul of 9.
\\ is the negate of //
&
isin
if (cat isin $1-) if (cat isin $1-)
Matches for "a cat", "catalog", "implicate " and any string where "cat" is in.
iswm
iswm stands for is wildcard match.
Operators:
* 0 or more characters ? 1 character & 1 word (atleast 1 or more non-space characters)
if (home*away*lost iswm $1-)
This would match anything starting with home and ending in lost, with away being between home and lost. It would match, "homeawaylost", "home away lost", "home is missed when you are away or lost", etc.
if (ca?* iswm $1-)
Requires one character after "ca" and allows 0 or more character after it. So it would match for cat, cab, cabin etc.
if (I & you iswm $1-)
Matches any string that consists of "I + one word + you". Examples would be, "I love you", "I hate you", "I Moo You", it would not however match, "I dont love you" since "dont love" contains a space.
isnum
if ($1 isnum) ;Returns true if $1 is of numeric value if ($1 isnum 10-) ;Returns true if $1 is number higher than 10 if ($1 isnum 20-30) ;Returns true if $1 is a number between 20 and 30
The Examples above checks $1 if, is it a number?, is it a number above 10?, is it a number between 20 and 30?
isletter
if ($1 isletter) ;Returns true if $1 is a letter, any letter if ($1 isletter abcdefg) ;Returns true if $1 is in the string of letters abcdefg if ($1 isletter HelloWorld) ;Returns true if $1 is in the string of letters HeloWrd
- Note that the checking is case-sensitive, the letter h will not return true if checked against the string HelloWorld.
isalnum
isalpha
islower
isupper
ison
isop
ishop
isvoice
isreg
ischan
isban
isaop
isavoice
isignore
isprotect
isnotify
Notes
Not all comparations need two parameters:
if ($1- isupper)
returns true, if $1- oly contain uppercase letters. So ABCD returns true, but even one lowercase letter makes it return false.
Combining comparisons
You can combine comparisons by using the && for AND and || for OR characters.
var %c = 5 if (%c < 6) && (%c > 0) ; returns true because %c is both, smaller than 6 and greater than 0 if (%c < 6) || (%c isalpha) ; returns true because %c is lower than 6. ; note that %c is not alphapetical and returns false, but || matches for 1 .. N true values. if (%c < 6) && (%c isalpha) ; returns false if (%c < 6) && (%c !isalpha) ; ! negates the operator, this this returns true
NOTE this article covers only if-then-else string operators, so you can't use
if (foo isin test.txt)
to check content of text-files. You can use $read instead to read the content of a text file and then use the return value returned by that $read.