Fondamenti di Informatica T-1 Stringhe Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 13
STRINGHE: Definizione e creazione Stringa tipo di dato che rappresenta un insieme ordinato di caratteri Creazione di una stringa in Java: String es stringa1 = Ciao ; String es stringa2 = new String( Ciao ); Fondamenti di Informatica T-1 Allegra De Filippo 2 / 13
STRINGHE: Operazioni (1) Prendiamo come esempio la seguente stringa String saluto = Ciao ; Concatenazione saluto = saluto + a tutti! ; ora la stringa è diventata: Ciao a tutti! Calcolo della lunghezza: length() int lunghezza = saluto.length(); La lunghezza della nostra stringa in questo caso è 13 (N.B. CONTA GLI SPAZI TRA LE PAROLE E LA PUNTEGGIATURA!) Fondamenti di Informatica T-1 Allegra De Filippo 3 / 13
ATTENZIONE! La posizione di un carattere in una stringa si conta a partire da 0 e non da 1 Fondamenti di Informatica T-1 Allegra De Filippo 4 / 13
STRINGHE: Operazioni (2) Riprendiamo come esempio la stringa String saluto = Ciao a tutti! ; Indice della prima occorrenza di una data sottostringa: indexof() int prima occorrenza = saluto.indexof( tutti ); la prima occorrenza di tutti è 7. N.B. Per contare a partire dall ultimo carattere della stringa, posso usare lastindexof() Estrazione dell i-esimo carattere: charat() char prima lettera = saluto.charat(0); l indice del primo carattere è 0 prima lettera = C Fondamenti di Informatica T-1 Allegra De Filippo 5 / 13
STRINGHE: Operazioni (3) Estrazione di una sottostringa dati due indici: substring() es: int iniziale = 7; int finale = 12; String sottostringa = saluto.substring(iniziale, finale); sottostringa = tutti Trasformazione maiuscole-minuscole: touppercase() e tolowercase() String saluto maiuscolo = saluto.touppercase(); saluto maiuscolo = CIAO A TUTTI! Sostituzione di una sottostringa ad ogni occorrenza: replaceall() String nuovo saluto = saluto.replaceall( a, AAA ); nuovo saluto = ciaaao AAA tutti! Utilissima per eliminare gli spazi bianchi. Come? Fondamenti di Informatica T-1 Allegra De Filippo 6 / 13
STRINGHE: Lettura Metodo next() della classe Scanner: Scanner tastiera = new Scanner(System.in); String s1 = tastiera.next(); s1 è il contenuto della console fino al primo spazio bianco Metodo nextline() della classe Scanner: String s2 = tastiera.nextline(); s2 è un intera riga della console N.B. nextline() ha un comportamento anomalo se preceduto da una lettura (ad es. next() o nextint() o nextdouble()...): tali metodi non consumano l ENTER al termine dell input e quindi una successiva nextline() perderebbe l acquisizione dell input raccogliendo una stringa vuota. Fondamenti di Informatica T-1 Allegra De Filippo 7 / 13
ESERCIZIO 1 (SVOLTO) Scrivere un programma che: Chieda all utente di inserire nome e cognome Mostri a video le iniziali dell utente Calcoli e mostri a video le lunghezze del nome e del cognome Mostri a video una possibile email dell utente, nella forma nome.cognome@studio.unibo.it N.B. Le email NON contengono lettere maiuscole e NON contengono spazi bianchi (quindi, in caso di nomi e cognomi composti, vorremmo essere in grado di eliminarli) Fondamenti di Informatica T-1 Allegra De Filippo 8 / 13
ESERCIZIO 1 (SOLUZIONE) Fondamenti di Informatica T-1 Allegra De Filippo 9 / 13
ESERCIZIO 2 Scrivere un programma che chieda all utente di inserire una frase. Acquisita la frase, il programma deve: Mostrare a video la prima parola della frase inserita dall utente Mostrare a video la frase dopo aver spostato la prima parola alla fine della frase esempio: se la frase inserita è oggi piove molto, la frase diventerà piove molto oggi Chiedere all utente una parola da inserire nella frase (si supponga che la parola non sia presente nella frase) Mostrare a video l ultima parola della frase e sostituirla con la parola inserita dall utente, poi stampare a video la frase modificata esempio: se la parola da inserire è sabato, la frase diventerà piove molto sabato Fondamenti di Informatica T-1 Allegra De Filippo 10 / 13
ESERCIZIO 2 (ESEMPI e SUGGERIMENTI) Esempio di output: Per trovare la prima parola di una frase devo trovare una sottostringa che abbia il primo carattere all indice 0 e termini con uno spazio bianco. Analogamente posso trovare l ultima parola (abbiamo visto come contare gli indici dalla fine). Fondamenti di Informatica T-1 Allegra De Filippo 11 / 13
ESERCIZIO 3 Una libreria utilizza un sistema di catalogazione usando, per ogni libro, dei codici strutturati nel seguente modo: Le prime due lettere, in maiuscolo, sono le prime due lettere del nome dell autore L anno di pubblicazione (da acquisire come INTERO), separato da un trattino dalle precedenti lettere Le prime tre lettere del titolo del libro, in maiuscolo, separate da un trattino dall anno di pubblicazione La prima e l ultima lettera del nome della casa editrice (in minuscolo e tra parentesi tonde) Scrivere un programma che, inseriti da input il nome dell autore, l anno di pubblicazione e il nome della casa editrice, stampi a video il corrispondente codice. Fondamenti di Informatica T-1 Allegra De Filippo 12 / 13
ESERCIZIO 3 (ESEMPI e SUGGERIMENTI) Esempio di output: Le lettere del nome dell autore, il titolo del libro e il nome della casa editrice NON devono contenere spazi al fine di generare il codice. Dovremo eliminarli prima di estrarre i caratteri utili. Fondamenti di Informatica T-1 Allegra De Filippo 13 / 13