Upper and lowercase - 05/09/10 02:59 PM
Determining upper and lowercase chars is not functioning properly in 7.1
Lets take a code example:
Results:
Unicode can't be displayed here but you get the idea.
The results: http://pastebin.com/HP5dzBLF
As 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?
Lets take a code example:
Php Code:
/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:
Php Code:
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/HP5dzBLF
As 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?