# JavaScript/Oggetto String

JavaScript
Copertina Tutti i moduli · Sviluppo
* IntroduzioneJavaScript/Introduzione
* Il nostro primo programmaJavaScript/Il nostro primo programma
* Tipi di dati e variabiliJavaScript/Tipi di dati e variabili
* Operatori e castingJavaScript/Operatori e casting
* Le strutture di controllo
** SelezioneJavaScript/Selezione
** IterazioneJavaScript/Iterazione
* Funzioni definite dall'utenteJavaScript/Funzioni definite dall'utente
* Programmazione ad oggettiJavaScript/Oggetti
** Oggetto StringJavaScript/Oggetto String
** Oggetto MathJavaScript/Oggetto Math
** Oggetto DateJavaScript/Oggetto Date
** Oggetto ArrayJavaScript/Oggetto Array
* CookieJavaScript/Cookie
* TimerJavaScript/Timer
* L'oggetto windowJavaScript/BOM
** Gli eventi nel BOMJavaScript/Gli eventi nel BOM
** Oggetto documentJavaScript/Oggetto document
** Altri oggetti del BOMJavaScript/Altri oggetti del BOM
* Il Document Object ModelJavaScript/DOM
** Proprietà e metodiJavaScript/Proprietà e metodi del DOM
** Gli eventi nel DOMJavaScript/Gli eventi nel DOM
* Espressioni regolariJavaScript/Espressioni regolari
* AJAX
** Introduzione ad AJAXJavaScript/Introduzione ad AJAX
** Usare AJAXJavaScript/Usare AJAX
* Costruttori e prototipiJavaScript/Costruttori e prototipi
* AppendiceJavaScript/Appendice
* CreditiJavaScript/Crediti
Modifica il sommario
L'oggetto String permette di effettuare numerose operazioni sulle stringhe quali ricerca, isolamento di un carattere e altro ancora.

## Costruttore

Per creare un nuovo oggetto della classe String usiamo la sintassi:
Il costruttore prende come parametro la stringa che sarà manipolata nel corso dello script.
L'oggetto String è un po' particolare, in quanto, come vi sarete già accorti, corrisponde ad un "doppione" del tipo di dato primitivo stringa, analizzato precedentemente nel corso del libro. Dal momento che JavaScript effettua automaticamente la conversioni dei dati quando necessario, la differenza è dal punto di vista pratico, in quanto:
* se creiamo una stringa con la normale sintassi
    e successivamente volessimo trattarla come un oggetto String usando metodi o proprietà della classe String, JavaScript converte automaticamente la stringa in un oggetto String
* se abbiamo un oggetto String e volessimo recuperare la sua stringa, JavaScript converte automaticamente l'oggetto String in una stringa contenente la stringa indicata nel costruttore.

## Proprietà

L'oggetto String dispone di una proprietà rilevante, la proprietà length che restituisce il numero di caratteri contenuti in una stringa:
Nell'esempio appena visto, nella seconda riga la variabile esempio viene convertita in un oggetto String per accedere alla proprietà length. Sempre per quanto appena detto, potremmo semplicemente scrivere:

## Metodi

I metodi della classe String permettono di eseguire molteplici operazioni sulle stringhe; si noti che questi metodi lavorano sulla stringa contenuta nell'oggetto ma restituiscono il valore desiderato senza modificare il valore dell'oggetto stringa.

### toLowerCase e toUpperCase

Questi due metodi restituiscono la stringa forzando la capitalizzazione o tutta minuscola o tutta minuscola. Attenzione:

### charAt e charCodeAt

Il metodo charAt restituisce il carattere della stringa che si trova alla posizione specificata; il primo carattere è identificato dalla posizione 0. Ad esempio:
Questo semplice codice estrapola dalla stringa fornita in input dall'utente l'ultimo carattere. Per fare ciò recupera il carattere alla posizione testo.length - 1: infatti, dal momento che il conteggio dei caratteri parte da 0, nel caso di "Hello, world!" avremo queste posizioni:
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| H | e | l | l | o | , | | w | o | r | l | d | ! |
Quindi, essendo la stringa sia composta da 13 caratteri, l'ultimo si trova alla posizione 12, ovvero 13-1.
Il metodo charCodeAt funziona come charAt ma invece di restituire il carattere alla posizione specificata, restituisce il suo codice ASCII. Ad esempio:

### fromCharCode

Il metodo fromCharCode è l'opposto di charCodeAt: infatti prende come argomento un numero qualsiasi di numeri che vengono interpretati come codici Ascii e trasformati in una stringa. Questo metodo è però un po' particolare, in quanto non necessita di lavorare su un oggetto String; per questo viene detto statico. Per utilizzare il metodo sarà sufficiente usare la sintassi:
facendo cioè riferimento alla classe String. Vediamo un esempio:
Questo semplice snippet scorre dal codice del carattere "0" a quello del carattere "9" creando così la stringa:

### indexOf e lastIndexOf

Uno dei metodi dell'oggetto String che useremo più di frequente sarà indexOf la cui sintassi è:
In pratica, il metodo cerca nella stringa la prima occorrenza della sottostringa search e ne restituisce la posizione (a partire da 0); se la stringa non viene trovata, restituisce -1. Il parametro opzionale start specifica la posizione dalla quale iniziare la ricerca (di default è 0). Ad esempio;
Il metodo lastIndexOf funziona analogamente ad indexOf ma inizia la ricerca dalla fine della stringa e non dall'inizio

### substr

Il metodo substr presenta la sintassi:
Il metodo estrae dalla stringa indicata una sottostringa a partire dalla posizione indicata dal parametro start un numero length di caratteri. Se quest'ultimo parametro non è specificato, il metodo include anche tutti i caratteri a partire da quello iniziale fino alla fine della stringa. Ad esempio:

### replace

Il metodo replace restituisce la stringa iniziale sostituendo alla prima occorrenza della stringa indicata come primo parametro quella fornita come secondo. Ad esempio:
Se si desidera sostituire tutte le occorrenze si può usare questa funzione:
con la sintassi replace('torta', 't', 'f') (che restituisce "forfa"). Oppure si può usare un'espressione regolare:

### split

Il metodo split viene presentato ora in quanto fa parte della classe String, ma il suo uso richiede la conoscenza degli array, che verranno esaminati più avanti nel corso del libro, basti sapere che un array è una sorta di contenitore di variabili. La sintassi è:
Il metodo restituisce un array contenente le diverse sottostringhe in cui la stringa è divisa dal separatore. Ad esempio:

## Esercizi

* Scrivere una funzione che conti le occorrenze di una sottostringa in una stringa (ad esempio se vengono passati come parametri "raffaele" e "a" deve restituire 2, ma se si inseriscono "raffaele" e "ff" deve restituire 1.
* Creare una funzione che fornisca la sottostringa di una stringa data compresa tra due altre sottostringhe, a partire da sinistra. Ad esempio, dati come parametri una@bella&stringa, "@" e "&", restituisca "bella".