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="utf-8"> <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:
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.
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.
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:
Sito realizzato in base al template offerto da
http://www.graphixmania.it