110 lines
4.6 KiB
C#
110 lines
4.6 KiB
C#
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();
|
|
|
|
Pausa();
|
|
break;
|
|
case 4:
|
|
Console.Clear();
|
|
|
|
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 vocali, consonanti;
|
|
|
|
Console.Write("Inserire il testo in cui contare le lettere: ");
|
|
daEsserCercato = Console.ReadLine();
|
|
|
|
stringa = daEsserCercato.ToLower();//converto la stringa in caratteri minuscoli per semplificare la ricerca delle lettere dopo
|
|
|
|
//Queste sono due addizioni lunghissime perché ho voluto cercare di usare solo i metodi delle stringhe e non convertire la stringa in array per la ricerca
|
|
vocali = CercaLettera(stringa, 'a') + CercaLettera(stringa, 'e') + CercaLettera(stringa, 'i') + CercaLettera(stringa, 'o') + CercaLettera(stringa, 'u');
|
|
consonanti = CercaLettera(stringa, 'b') + CercaLettera(stringa, 'c') + CercaLettera(stringa, 'd') + CercaLettera(stringa, 'f') + CercaLettera(stringa, 'g') + CercaLettera(stringa, 'h') + CercaLettera(stringa, 'j') + CercaLettera(stringa, 'k') + CercaLettera(stringa, 'l') + CercaLettera(stringa, 'm') + CercaLettera(stringa, 'n') + CercaLettera(stringa, 'p') + CercaLettera(stringa, 'q') + CercaLettera(stringa, 'r') + CercaLettera(stringa, 's') + CercaLettera(stringa, 't') + CercaLettera(stringa, 'v') + CercaLettera(stringa, 'w') + CercaLettera(stringa, 'x') + CercaLettera(stringa, 'y') + CercaLettera(stringa, 'z');
|
|
|
|
Console.WriteLine($"La stringa {daEsserCercato} contiene {vocali} vocali e {consonanti} 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;
|
|
}
|
|
|
|
|
|
}
|