In questo articolo vorrei racchiudere alcuni dei metodi che si possono adottare per controllare la presenza di caratteri speciali o simboli in una stringa. Esistono metodi più comuni e altri più "particolari".
Metodo 1 - La classe System.Char
La classe System.Char mette a disposizione dei metodi statici utili a discriminare se un carattere è una lettera, un numero o un simbolo:
Metodo 2 - Le Espressioni Regolari
Molto più elegante è la soluzione che prevede l'utilizzo di espressioni regolari per controllare l'input. Questa strategia viene spesso evitata dai programmatori neofiti a causa delle difficoltà che ci possono essere ad imparare o ricordarsi tutte le specifiche delle stringhe di matching.
ATTENZIONE! A livello prestazionale l'utilizzo di questo metodo rispetto al precedente non risulta essere più performante bensì leggermente più lungo da eseguire in termini di CPU.
Metodo 3 - L'algoritmo "fatto in casa"
Questo algoritmo sfrutta il principio per cui ogni carattere è rappresentato, tramite codifica ASCII o UNICODE, da un valore numerico. Sulla base di questo è possibile effettare un cast di un carattere nel suo valore intero, quindi controllare il valore del numero per discriminare lettere, numeri e simboli.
Le motivazioni che mi hanno portato a scrivere questo algoritmo, invece di utilizzare i metodi standard del framework, sono descritte di seguito.
Perchè?
Il motivo che mi ha spinto a scrivere questo articolo risale a non molto tempo fa quando, per esigenze lavorative, ho dovuto programmare su un framework dotNet modificato: una sorta di "MOD" del framework originale, compatibile solo in parte con il framework 3.5 di casa Microsoft; un progetto simile è la Piattaforma MONO.
I metodi proposti (classe char ed espressioni regolari) non sono applicabili alla piattaforma modificata in questione, questa mancanza ha richiesto la scrittura di un algoritmo ad-hoc per le mie necessità che ho voluto condividere in questo articolo.
Conclusione
"Mater artium necessitas" (Di necessità virtù) è proprio la cosa che pensavo mentre implementavo l'algoritmo. Credo che un programmatore non debba mai perdere la capacità di risolvere problemi con pochi strumenti a disposizione, cosa che invece sta succedendo dopo l'introduzione e la convivenza con strumenti facili ed utili come i framework di applicazione (strumenti che apprezzo).
Mettersi in gioco, superare se stessi, vincere le proprie paure, sono tutti input necessari all'accrescimento professionale di un individuo (anche solo per tenere la mente allenata).
Nessun commento:
Posta un commento