namespace strings_1; class Program { static void Main(string[] args) { Console.Clear(); int scelta; do { Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Trova e sostituisci"); Console.WriteLine("2. Conta vocali e consonanti"); Console.WriteLine("3. Modifica stringa"); Console.WriteLine("4. Inverti le lettere"); Console.WriteLine("0. Esci"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: Console.Clear(); Console.WriteLine(TrovaESostituisci()); Pausa(); break; case 2: Console.Clear(); ContaLettere(); Pausa(); break; case 3: Console.Clear(); Submenu(); Console.Clear(); break; case 4: Console.Clear(); LetterSwap(); Pausa(); break; default: Console.WriteLine("Opzione non valida."); Pausa(); break; } } while (scelta != 0); } static void Pausa() { Console.WriteLine("Premere un tasto per continuare. . ."); Console.ReadKey(); Console.Clear(); } static string TrovaESostituisci() { string daEsserCercato, trova, sostituisci, ritorno; //Richiedo all'utente il testo in cui cercare, il testo da trovare e il testo con cui sostituire il testo trovato Console.Write("Inserire il testo in cui cercare: "); daEsserCercato = Console.ReadLine(); Console.Write("Inserire il testo da cercare: "); trova = Console.ReadLine(); Console.Write("Inserire il testo da sostituire: "); sostituisci = Console.ReadLine(); if (daEsserCercato.Contains(trova)) { ritorno = daEsserCercato.Replace(trova, sostituisci); } else { ritorno = $"Nessuna occorrenza di {trova} trovata in {daEsserCercato}"; } return ritorno; } static void ContaLettere() { string daEsserCercato, stringa; int numeroVocali = 0, numeroConsonanti = 0; char[] vocali = { 'a', 'e', 'i', 'o', 'u' }, consonanti = { 'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z' }; Console.Write("Inserire il testo in cui contare le lettere: "); daEsserCercato = Console.ReadLine(); //converto la stringa in caratteri minuscoli per semplificare la ricerca delle lettere dopo for (int i = 0; i < vocali.Length; i++) { numeroVocali = numeroVocali + CercaLettera(daEsserCercato.ToLower(), vocali[i]); } for (int i = 0; i < consonanti.Length; i++) { numeroConsonanti = numeroConsonanti + CercaLettera(daEsserCercato.ToLower(), consonanti[i]); } Console.WriteLine($"La stringa {daEsserCercato} contiene {numeroVocali} vocali e {numeroConsonanti} consonanti"); } static int CercaLettera(string p_stringa, char p_lettera) { int i = 0, ritorno = 0; //creo un array per avere l'indice iniziale di ogni occorrenza del testo da trovare e lo riempio di -1 visto che sono indici non validi int[] indiciOccorrenze = new int[p_stringa.Length]; for (int j = 0; j < indiciOccorrenze.Length; j++) { indiciOccorrenze[j] = -1; } while (p_stringa.Contains(p_lettera)) {//finché c'è un'occorrenza ritorno++;//conta quante occorrenze ci sono state indiciOccorrenze[i] = p_stringa.IndexOf(p_lettera);//salva l'indice iniziale dell'occorrenza p_stringa = p_stringa.Substring(indiciOccorrenze[i] + 1);//accorcia il testo per cercare oltre l'occorrenza appena trovata (1 serve per accorciare oltre la lettera) i++; } return ritorno; } static void Submenu() { Console.Clear(); string frase, input; int scelta; Console.Write("Inserire una frase: "); input = Console.ReadLine(); Console.Clear(); do { frase = input; Console.WriteLine($"Frase corrente: {frase}"); Console.WriteLine(); Console.WriteLine("Inserire un'opzione:"); Console.WriteLine("1. Converti in minuscolo"); Console.WriteLine("2. Converti in maiuscolo"); Console.WriteLine("3. Sostituisci \'.\' con \\n"); Console.WriteLine("0. Torna al menù precedente"); Console.Write("Scelta: "); scelta = Convert.ToInt32(Console.ReadLine()); switch (scelta) { case 0: break; case 1: Console.Clear(); frase = frase.ToLower(); Console.WriteLine($"Frase in minuscolo: {frase}"); Pausa(); break; case 2: Console.Clear(); frase = frase.ToUpper(); Console.WriteLine($"Frase in maiuscolo: {frase}"); Pausa(); break; case 3: Console.Clear(); frase = frase.Replace(".", "\\n"); Console.WriteLine($"Frase con \\n: {frase}\n\n"); frase = input;//reset della frase frase = frase.Replace(".", "\n"); Console.WriteLine($"Frase con \\n interpretato: {frase}"); Pausa(); break; default: Console.WriteLine("Opzione non valida."); Pausa(); break; } } while (scelta != 0); } static void LetterSwap() { string input, stringa1, stringa2, stringa3; int numeroLettere, i, j = 0; Console.Write("Inserire una frase: "); input = Console.ReadLine(); Console.Write("Inserire il numero di lettere da scambiare: "); numeroLettere = Convert.ToInt32(Console.ReadLine()); char[] array1 = new char[numeroLettere]; char[] array2 = new char[input.Length - numeroLettere * 2]; char[] array3 = new char[numeroLettere]; for (i = 0; i < numeroLettere; i++) { array1[j] = input[i]; j++; } stringa1 = string.Join("", array1); j = 0; for (; i < input.Length - numeroLettere; i++) { array2[j] = input[i]; j++; } stringa2 = string.Join("", array2); j = 0; for (; i < input.Length; i++) { array3[j] = input[i]; j++; } stringa3 = string.Join("", array3); Console.WriteLine($"La frase con le lettere scambiate è: {stringa3}{stringa2}{stringa1}"); } }