Determining upper and lowercase chars is not functioning properly in 7.1
Lets take a code example:
/test {
var %i = 1
while (%i <= 300) {
var %c = $chr(%i)
echo -a > %c $iif(%c isupper, UPPER) $iif(%c islower, LOWER) $iif($regex(%c, /[[:upper:]]/g), REG_UPPER) $iif($regex(%c, /[[:lower:]]/g), REG_LOWER)
inc %i
}
}
Results:
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
UPPER LOWER
! UPPER LOWER
" UPPER LOWER
# UPPER LOWER
$ UPPER LOWER
% UPPER LOWER
& UPPER LOWER
' UPPER LOWER
( UPPER LOWER
) UPPER LOWER
* UPPER LOWER
+ UPPER LOWER
, UPPER LOWER
- UPPER LOWER
. UPPER LOWER
/ UPPER LOWER
0 UPPER LOWER
1 UPPER LOWER
2 UPPER LOWER
3 UPPER LOWER
4 UPPER LOWER
5 UPPER LOWER
6 UPPER LOWER
7 UPPER LOWER
8 UPPER LOWER
9 UPPER LOWER
: UPPER LOWER
; UPPER LOWER
< UPPER LOWER
= UPPER LOWER
> UPPER LOWER
? UPPER LOWER
@ UPPER LOWER
A UPPER REG_UPPER
B UPPER REG_UPPER
C UPPER REG_UPPER
D UPPER REG_UPPER
E UPPER REG_UPPER
F UPPER REG_UPPER
G UPPER REG_UPPER
H UPPER REG_UPPER
I UPPER REG_UPPER
J UPPER REG_UPPER
K UPPER REG_UPPER
L UPPER REG_UPPER
M UPPER REG_UPPER
N UPPER REG_UPPER
O UPPER REG_UPPER
P UPPER REG_UPPER
Q UPPER REG_UPPER
R UPPER REG_UPPER
S UPPER REG_UPPER
T UPPER REG_UPPER
U UPPER REG_UPPER
V UPPER REG_UPPER
W UPPER REG_UPPER
X UPPER REG_UPPER
Y UPPER REG_UPPER
Z UPPER REG_UPPER
[ UPPER LOWER
\ UPPER LOWER
] UPPER LOWER
^ UPPER LOWER
_ UPPER LOWER
` UPPER LOWER
a LOWER REG_LOWER
b LOWER REG_LOWER
c LOWER REG_LOWER
d LOWER REG_LOWER
e LOWER REG_LOWER
f LOWER REG_LOWER
g LOWER REG_LOWER
h LOWER REG_LOWER
i LOWER REG_LOWER
j LOWER REG_LOWER
k LOWER REG_LOWER
l LOWER REG_LOWER
m LOWER REG_LOWER
n LOWER REG_LOWER
o LOWER REG_LOWER
p LOWER REG_LOWER
q LOWER REG_LOWER
r LOWER REG_LOWER
s LOWER REG_LOWER
t LOWER REG_LOWER
u LOWER REG_LOWER
v LOWER REG_LOWER
w LOWER REG_LOWER
x LOWER REG_LOWER
y LOWER REG_LOWER
z LOWER REG_LOWER
{ UPPER LOWER
| UPPER LOWER
} UPPER LOWER
~ UPPER LOWER
UPPER LOWER
€ UPPER LOWER
UPPER LOWER
‚ UPPER LOWER
ƒ UPPER LOWER
„ UPPER LOWER
… UPPER LOWER
† UPPER LOWER
‡ UPPER LOWER
ˆ UPPER LOWER
‰ UPPER LOWER
Š UPPER LOWER
‹ UPPER LOWER
Œ UPPER LOWER
UPPER LOWER
Ž UPPER LOWER
UPPER LOWER
UPPER LOWER
‘ UPPER LOWER
’ UPPER LOWER
“ UPPER LOWER
” UPPER LOWER
• UPPER LOWER
– UPPER LOWER
— UPPER LOWER
˜ UPPER LOWER
™ UPPER LOWER
š UPPER LOWER
› UPPER LOWER
œ UPPER LOWER
UPPER LOWER
ž UPPER LOWER
Ÿ UPPER LOWER
UPPER LOWER
¡ UPPER LOWER
¢ UPPER LOWER
£ UPPER LOWER
¤ UPPER LOWER
¥ UPPER LOWER
¦ UPPER LOWER
§ UPPER LOWER
¨ UPPER LOWER
© UPPER LOWER
ª UPPER LOWER
« UPPER LOWER
¬ UPPER LOWER
UPPER LOWER
® UPPER LOWER
¯ UPPER LOWER
° UPPER LOWER
± UPPER LOWER
² UPPER LOWER
³ UPPER LOWER
´ UPPER LOWER
µ UPPER LOWER
¶ UPPER LOWER
· UPPER LOWER
¸ UPPER LOWER
¹ UPPER LOWER
º UPPER LOWER
» UPPER LOWER
¼ UPPER LOWER
½ UPPER LOWER
¾ UPPER LOWER
¿ UPPER LOWER
À UPPER
Á UPPER
 UPPER
à UPPER
Ä UPPER
Å UPPER
Æ UPPER
Ç UPPER
È UPPER
É UPPER
Ê UPPER
Ë UPPER
Ì UPPER
Í UPPER
Î UPPER
Ï UPPER
Ð UPPER
Ñ UPPER
Ò UPPER
Ó UPPER
Ô UPPER
Õ UPPER
Ö UPPER
× UPPER LOWER
Ø UPPER
Ù UPPER
Ú UPPER
Û UPPER
Ü UPPER
Ý UPPER
Þ UPPER
ß LOWER
à LOWER
á LOWER
â LOWER
ã LOWER
ä LOWER
å LOWER
æ LOWER
ç LOWER
è LOWER
é LOWER
ê LOWER
ë LOWER
ì LOWER
í LOWER
î LOWER
ï LOWER
ð LOWER
ñ LOWER
ò LOWER
ó LOWER
ô LOWER
õ LOWER
ö LOWER
÷ UPPER LOWER
ø LOWER
ù LOWER
ú LOWER
û LOWER
ü LOWER
ý LOWER
þ LOWER
ÿ LOWER
Ā UPPER
ā LOWER
Ă UPPER
ă LOWER
Ą UPPER
ą LOWER
Ć UPPER
ć LOWER
Ĉ UPPER
ĉ LOWER
Ċ UPPER
ċ LOWER
Č UPPER
č LOWER
Ď UPPER
ď LOWER
Đ UPPER
đ LOWER
Ē UPPER
ē LOWER
Ĕ UPPER
ĕ LOWER
Ė UPPER
ė LOWER
Ę UPPER
ę LOWER
Ě UPPER
ě LOWER
Ĝ UPPER
ĝ LOWER
Ğ UPPER
ğ LOWER
Ġ UPPER
ġ LOWER
Ģ UPPER
ģ LOWER
Ĥ UPPER
ĥ LOWER
Ħ UPPER
ħ LOWER
Ĩ UPPER
ĩ LOWER
Ī UPPER
ī LOWER
Ĭ UPPER
Unicode can't be displayed here but you get the idea.
The results:
http://pastebin.com/HP5dzBLFAs you see, isupper and islower operators are not only true for letters/characters. Can work around this with the isletter operator.
Also you can see the regex group only works for a-z and A-Z.
Making a proper regex to take care of all upper or lowercase wouldn't be feasible as they are not grouped together. (as you can see in the end there)
Is there another (fast) way to determine properly between lower and uppercase letters?