strings_1/Program.cs
La Programmatrice Verde 35bfd8833f Modifica commento
2025-02-08 23:18:30 +01:00

204 lines
7.1 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 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}");
}
}