PROGRAMMIAMO
JS - I metodi di String
Il metodo slice

Gli oggetti, come sappiamo, sono dotati di proprietÓ (es. la proprietÓ length di cui abbiamo giÓ parlato) e di metodi. Un metodo rappresenta un'azione che Ŕ possibile compiere su un certo oggetto. In pratica i metodi sono delle funzioni strettamente legate all'oggetto a cui appartengono (infatti per essi si usa la notazione col punto, esattamente come nel caso delle proprietÓ).

Consideriamo il metodo slice che consente di "affettare" un pezzo della stringa. Riscriviamo a tale scopo la funzione visualizza() nel modo seguente:

<head>

<meta charset="windows-1252">

<title> Semplice esempio in Javascript</title>

<script> 

function visualizza()
{
    var contenuto =  document.getElementById('testo').value;
    pezzo = contenuto.slice(4,12);
    window.alert(pezzo);
}
</script>
 

</head>

Ora si provi a scrivere nella seguente text area la frase "infuso di te al limone" e si osservi il risultato che si ottiene premendo sul pulsante Mostra:


Si ottiene la seguente finestra di alert:

Alert

La ragione Ŕ che il metodo slice ha tagliato la stringa "infuso di te al limone" cominciando dopo il quarto carattere e terminando col dodicesimo carattere:

infuso di te al limone

Si osservi che anche gli spazi vuoti (blank) vengono contati come normali caratteri.

Osserviamo, come giÓ detto, che i metodi sono delle funzioni. L'unica differenza rispetto alle funzioni normali Ŕ che i metodi appartengono a un particolare oggetto e il nome dell'oggetto va indicato per chiamare il metodo.

Torniamo al nostro esempio del metodo slice ed esaminiamo la chiamata al metodo:

pezzo = contenuto.slice(4,12);

Ovviamente i valori 4 e 12 sono gli argomenti della chiamata. Il valore di ritorno Ŕ la porzione di stringa (che viene assegnata alla variabile pezzo). Si osservi che non occorre inserire fra gli argomenti la stringa su cui viene effettuato il taglio (contenuto), poichÚ questa Ŕ l'oggetto a cui appartiene il metodo.

 

Gli altri metodi di String

La tabella seguente elenca i metodi delle stringhe in JS:

Metodo Descrizione
charAt() Ritorna il carattere alla posizione indicata
charCodeAt() Ritorna il codice Unicode del carattere alla posizione indicata
concat() Unisce due o pi¨ stringhe
fromCharCode() Converte in caratteri un codice UNICODE
indexOf() Torna la posizione della prima occorrenza trovata in una stringa
lastIndexOf() Torna la posizione dell'ultima occorrenza trovata in una stringa
localeCompare() Confronta due stringhe
match() Verifica se una stringa corrisponde a una espressione regolare
replace() Effettua una sostituzione in una stringa
search() Effettua una ricerca in una stringa e torna la posizione (se trovato)
slice() Estrae una parte di stringa
split() Divide una stringa in un vettore di sottostringhe
substr() Estrae un certo numero di caratteri da una stringa
substring() Estrae caratteri da una stringa fra due indici
toLocaleLowerCase() Converte una stringa in minuscolo
toLocaleUpperCase() Converte una stringa in maiuscolo
toLowerCase() Converte una stringa in minuscolo
toString() Torna il valore di un oggetto String
toUpperCase() Converte una stringa in maiuscolo
trim() Rimuove gli spazi vuoti all'inizio e alla fine di una stringa
valueOf() Ritorna il valore primitivo di una stringa

I link conducono alle rispettive pagine del sito W3C Schools, dove i metodi sono spiegati nel dettaglio con esempi.

Esempio finale

Come esempio finale di elaborazione delle stringhe e di uso dei metodi, consideriamo il seguente script che conta il numero di parole contenute in una frase:

function conta()
{
frase = document.getElementById("frase").value;
// Elimina dalla frase tutti i caratteri non validi e li sostituisce con blank
frase = elimina(frase);
// Conta il numero di spazi nella frase
document.getElementById("parole").value = WordCount(frase);
}
function WordCount(str) 
{ 
return str.split(" ").length;
}
function elimina(str)
{
// Converte in minuscolo
str = str.toLowerCase();
// Sostituisce lettere accentate
str = rimpiazza(str);
// Sostituisce caratteri non alfabetici con blank
str = str.replace(/\W+/g,' ');
                           
// Sostituisce doppio blank con singolo
str = str.replace( /\s\s+/g, ' ' );
                                     
// Elimina blank iniziali e finali
return str.trim();
}

			
// Sostituisce lettere accentate con gli equivalenti non accentati
function rimpiazza(miaStringa) {
miaStringa = miaStringa.replace(/Ó/g, "a");
miaStringa = miaStringa.replace(/Ŕ/g, "e");
miaStringa = miaStringa.replace(/Ú/g, "e");
miaStringa = miaStringa.replace(/ý/g, "i");
miaStringa = miaStringa.replace(/˛/g, "o");
miaStringa = miaStringa.replace(/ˇ/g, "o");
miaStringa = miaStringa.replace(/¨/g, "u");
miaStringa = miaStringa.replace(/˙/g, "u");
return miaStringa;
}

Il codice Ŕ stato costruito utilizzando funzioni trovate in Internet da diverse fonti: questo Ŕ in effetti il modo con cui la maggior parte dei programmatori lavora in JS. Il lettore non deve preoccuparsi troppo di comprendere tutti i dettagli dello script.

In particolare il metodo replace fa largo uso delle cosiddette espressioni regolari, sequenze di simboli mediante i quali Ŕ possibile descrivere sinteticamente un insieme di stringhe (per esempio tutte le stringhe che contengono determinati caratteri) e di operare su di esse. L'argomento espressioni regolari Ŕ troppo complesso per essere trattato in questa sede e rimandiamo il lettore interessato a una trattazione approfondita su HTML.it.

Il funzionamento dello script pu˛ essere testato qui sotto:

Frase

Numero parole

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it