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