Stringhe
Diamo un nome alle cose!
Dichiarazione e inizializzazione
In java le stringhe sono oggetti, quindi le operazioni che possono essere fatte con questi tipi di dati sono incluse in una classe. Una stringa è una sequenza finita di caratteri.
Immaginiamo di avere una stringa s che contiene la frase <<Ecco la stringa>>.
Per la dichiarazione:
- String s;
Per l'inizializzazione:
- String s = "Ecco la stringa";
- String s = new String("Ecco la stringa");
Input & Output
L'input si fa in questo modo:
- s = in.nextLine( ); // Per ottenere la stringa intera
- s = in.next( ); // Per ottenere solo la prima parola
dove in è lo Scanner.
L'output si fa semplicemente:
- System.out.print(s);
Metodi principali
[Length]
Per ottenere la lunghezza della stringa:
- lunghezza = s.length( ); // metto in una variabile la lunghezza della stringa s
[CharAt]
Per estrarre un carattere da una stringa s:
- carattere = s.charAt(0); // metto in una variabile il carattere in prima posizione, di indice 0
- carattere = s.charAt(6); // metto in una variabile il carattere in settima posizione, di indice 6
- String s = "Ecco la stringa";
- String s = "Ecco\0la\0stringa";
- Uso di concat
- Uso dell'operatore +
- String s1 = "Ciao";
- String s2 = "Mamma"
- String s3;
- s3 = s1.concat(s2);
- String s1 = "Ciao";
- String s2 = "Mamma"
- String s3;
- s3 = s1 + s2;
- String s1;
- String s2 = "chiacchere";
- s1 = s2.substring(0,4);
- a = s.indexOf('e'); // a = 1
- b = s.lastIndexOf('c'); // b = 24
- c = s.indexOf("ca"); // c = 18
- d = s.lastIndexOf("no"); // d = 35
- e = s.indexOf("Oggi"); // e = - 1
- f = s.lastIndexOf('z'); // f = - 1
- s = String.valueOf(42); // Mette 42 nella stringa s
- t = String.valueOf('c'); // Mette il carattere "c" nella stringa t
Avrete
sicuramente notato che anche gli spazi vengono visti come caratteri.
Proprio parlando degli spazi, esistono due modi per rappresentarli:
Quindi potrei utilizzare \0 per indicare uno spazio. Questo non può sembrare così utile, però in alcuni casi lo è: per esempio, immaginiamo di voler verificare se c'è una sola frase in una stringa.
String stringa = "C'è solo una frase... o forse no?";
Questa stringa non è voluta a caso: si potrebbe pensare di contare i punti, ma qui abbiamo i punti di sospensione e il punto di domanda. Quindi dobbiamo trovare un'altra soluzione:
String stringa = "C'è solo una frase...\0o forse no?\0";
Ora contando gli \0 possiamo individuare quante frasi ci sono nella nostra stringa.[ConCat][+]
La concatenazione di due stringhe è la fusione in un'unica stringa. Si ottiene in due modi:
Vediamo il primo modo:
Vediamo il secondo modo:
In entrambi i modi in output avrò "CiaoMamma".
[SubString]
Ora un altro metodo: substring che restituisce parte di una stringa. Ecco la sintassi:
s1 = s2.substring(a,b);
dove s1 e s2 sono due stringhe, a è l'indice iniziale e b è l'indice finale escluso.
Consideriamo un esempio:
Allora in s1 ci sarà "chia".
[IndexOf][LastIndexOf]
Servono per verificare la presenza o meno di un carattere o di una sottostringa in una determinata stringa. In particolare IndexOf restituisce il primo indice in cui ha trovato il carattere o la sottostringa, mentre LastIndexOf restituisce l'ultimo. Se la ricerca fallisce entrambi i metodi restituiscono -1. Chiariamo con un esempio:
Abbiamo una stringa s che contiene "Ieri ho giocato a carte con il nonno".
[ValueOf]
Esegue la conversione di variabili primitive (int, float, char...) in stringhe.
[Equals]
Controlla se due stringhe sono uguali. Restituisce un boolean (true o false). Vediamo un esempio: supponiamo di avere tre stringhe s1, s2 e s3 di cui s1 = s2.
- System.out.println(s1.equals(s2)); // Stampa a video "true"
- System.out.println(s1.equals(s3)); // Stampa a video "false"
- if(s1.equals(s3)) System.out.println("Stringhe uguali"); System.out.println("Stringhe diverse");
Nel terzo caso l'output sarà "Stringhe diverse". Qui viene fuoriesce il concetto di boolean, dove se una certa condizione è vera esegue la prima istruzione altrimenti esegue la seconda.
