Le stringhe sono probabilmente uno dei principali vettori di dati nei programmi, soprattutto per la loro capacità di veicolare qualsiasi informazione esprimibile o convertibile in caratteri. Per tale motivo, vengono molto spesso sottoposte ad interpretazione (tecnicamente, parsing) per poterne sfruttare adeguatamente il contenuto.
Una delle principali attività da svolgere a riguardo consiste nell’estrazione di porzioni di esse in base alla posizione dei caratteri ed in Javascript ciò prende corpo con due funzioni che in questo post andiamo ad analizzare: substr e substring.
Esse hanno la medesima finalità, ma portata a termine in due modi differenti che non vanno confusi pena la produzione di errori o, peggio ancora, di bug difficili da individuare.
La forma della funzione substr è la seguente:
stringa.substr(inizio, numero_caratteri)
dove:
La definizione di substring è invece la seguente:
stringa.substring(inizio, fine)
dove:
Chiariamo subito che le posizioni nelle stringhe vengono conteggiate a partire da zero quindi la stringa “cane” vedrà in posizione 0 la lettera c, nella 1 la a e via dicendo. Se una stringa contiene, ad esempio, dieci lettere non avrà alcuna di esse in posizione 10 in quanto queste saranno identificate dalla 0 alla 9.
Ecco alcuni esempi, tutti presentati sulla seguente stringa:
stringa=”Ciao a tutti"
Chiediamo sette caratteri a partire dal secondo:
stringa.substr(1,7)
e otteniamo:
'iao a t'
Gli stessi argomenti in substring:
stringa.substring(1,7)
restituiscono:
'iao a '
restituendo dal carattere in posizione 1 a quello in posizione 6 (il carattere prima di quanto indicato nel secondo argomento).
Senza il secondo argomento entrambe le funzioni restituiscono il medesimo risultato, infatti sia:
stringa.substring(1)
che:
stringa.substr(1)
restituiscono tutta la stringa partendo dal secondo carattere:
'iao a tutti'
Se forniamo un solo argomento negativo, substr conteggerà i caratteri a partire dal fondo.
Infatti:
stringa.substr(-5)
restituisce:
'tutti'
Ovvero gli ultimi 5 caratteri
mentre substring considererà l’elemento negativo come 0 infatti:
stringa.substring(-5)
offre:
'Ciao a tutti'
Inoltre, qualora la funzione substring, basandosi sulle posizioni degli elementi, ricevesse un secondo argomento maggiore del primo, si preoccuperebbe da sola di invertirli pertanto le seguenti espressioni:
stringa.substring(8,2) stringa.substring(2,8)
forniscono il medesimo risultato:
'ao a t'
Infine, un ultimo caso spesso utile: se volessimo ottenere solo il primo carattere di una stringa ci basterebbe fornire ad entrambe le funzioni gli argomenti 0 e 1.
Sia:
stringa.substring(0,1)
che:
stringa.substr(0,1)
restituiscono
'C'
Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂