Stringhe Operare con le stringhe con laiuto degli array
Stringhe La stringa è un tipo di dati formato da una successione di caratteri. Il letterale stringa viene messo tra apici o virgolette "Questo è un letterale stringa" 'Anche questo' '123'(non è il numero 123!) ''(due apici consecutivi=stringa vuota) Fare attenzione, se si usano gli apici, che la stringa non contenga apostrofi. Dà errore la posizione 'Mario ha comprato un'automobile' Ad una variabile si può assegnare un valore di stringa x = 'Mario';
Proprietà delle stringhe Loperatore + messo tra stringhe le concatena x= 'Buon giorno, ' y = 'Mario' alert(x+y)// mostra 'Buon giorno, Mario' Il numero di caratteri di una stringa viene rilevato da length La proprietà viene rilevata con la notazione puntata applicata ad un letterale o ad una variabile stringa. Notare che gli spazi sono caratteri e vengono contati! alert("oggi è lunedì".length);// mostra 13 x="questa stringa è lunga 35 caratteri"; alert(x.length);
Come accedere ai caratteri di una stringa Ogni carattere di una stringa ha una posizione, che va da 0 alla lunghezza della stringa meno 1. Esempio"oggi è lunedì". Un carattere di una stringa viene letto con la funzione charAt(n) dove tra parentesi viene messo il numero che indica la posizione del carattere da leggere. La funzione viene applicata con la notazione puntata. Provarex="oggi è lunedì"; alert(x.charAt(8)); // mostra u carattere 0,1, … 12 (la stringa ha 13 caratteri!)
Memorizzare i caratteri di una stringa in un array Se si vuole operare sui caratteri delle stringhe, conviene generare un array è riempirlo con i caratteri della stringa. In questo modo, avendo a disposizione i caratteri della stringa separati uno dall'altro possiamo elaborare quanto richiesto dal problema Lo script memorizza i caratteri della stringa s nell'array a var a = new Array(); s = "ciao, come va?"; for (k=0;k<s.length;k++) a[k] = s.charAt(k);
Esempio 1- Invertire una stringa Data una stringa, si vuole generare la stringa formata con i caratteri della stringa presi al contrario (dall'ultimo al primo) Supponiamo che la stringa sias = "ciao, come va?"; Con il ciclo riempiamo l'array con i suoi 14 caratteri 'c' 'i' 'a' 'o' ',' ' ' 'c' 'o' 'm' 'e' ' ' 'v' 'a' '?' Inizializziamo una stringa vuota, che è quella che memorizza i caratteri al contrario r =''; Con un ciclo che parte dall'ultimo elemento dell'array a aggiungiamo a r il carattere a[k] r = r + a[k] (ricordare che il + tra stringhe le concatena)
Esempio 1- Invertire una stringa Lo script var a = new Array(); s = "ciao, come va?"; for (k=0;k<s.length;k++)// l'array a memorizza a[k] = s.charAt(k);// i caratteri della stringa r = '';// la stringa r al contrario è vuota for (k=a.length-1;k>=0;k--) // il ciclo comincia dalla fine dell'array r = r + a[k]; // + attacca il carattere a r alert(r);
Esercizi 1.Nell'esempio precedente, fare in modo che la stringa di cui viene costruita la inversa venga inserita dall'utente del programma con una finestra di prompt (provare cosa succede con 'I TOPI NON AVEVANO NIPOTI') 2.Data una stringa costruire la stringa contenente gli stessi caratteri della stringa, ma sostituendo le vocali con uno spazio. Ad esempio, se la stringa è "siamo in febbraio" deve produrre "s m n f bbr" Può essere usata per un giochino scemo del tipo "indovina la frase se te la faccio vedere senza vocali". 3.Data una stringa, costruire la stringa ottenuta inframmezzando uno spazio tra ciascun carattere della stringa data. Se ad esempio la stringa è "CASA", lo script deve produrre la stringa "C A S A"
Esercizi 4.Data una stringa costruire la stringa contenente gli stessi caratteri della stringa, ma sostituendo le lettere con dei punti di domanda (?) e lasciando gli spazi bianchi al loro posto. Ad esempio, se la stringa è "siamo in febbraio" deve produrre "????? ?? ????????" E' circa quello che viene fatto vedere inizialmente ai concorrenti del gioco televisivo "Gira la ruota" 5.Data una stringa, chiedere all'utente un carattere (finestra di prompt) e mostrargli solo i caratteri della stringa uguali a quello introdotto, sostituendo gli altri con il punto di domanda (?) e lasciando gli spazi bianchi al loro posto. Ad esempio, se la stringa è "siamo in febbraio" e l'utente inserisce una 'a' gli si deve mostrare "??a?? ?? ?????a??"