strings_1/Program.cs
La Programmatrice Verde ef6982364c Opzione 4
2025-02-06 10:21:03 +01:00

200 lines
7.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();
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 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;
}
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}");
}
}