Manipolazione del testo
ITT Fauser — Classi quarte
Testo, caratteri e manipolazione in C#
In C# una stringa è una sequenza di caratteri Unicode racchiusa tra virgolette doppie.
string saluto = "Ciao, mondo!";
string vuota = ""; // stringa vuota
string nulla = null; // riferimento nullo
Il prefisso $ permette di inserire espressioni direttamente nel testo tra parentesi graffe.
string nome = "Alice";
int eta = 20;
string msg = $"Mi chiamo {nome}
e ho {eta} anni.";
// "Mi chiamo Alice e ho 20 anni."
Semplice ma inefficiente in loop: ogni + crea un nuovo oggetto in memoria.
string msg = "Mi chiamo "
+ nome
+ " e ho "
+ eta
+ " anni.";
| Membro | Descrizione |
|---|---|
| .Length | Numero di caratteri nella stringa |
| .ToUpper() | Converte tutti i caratteri in maiuscolo |
| .ToLower() | Converte tutti i caratteri in minuscolo |
| .Trim() | Rimuove spazi (e newline) iniziali e finali |
| .Contains(s) | Restituisce true se la sottostringa s è presente |
| .Replace(old, new) | Sostituisce tutte le occorrenze di old con new |
| .Substring(i, n) | Estrae n caratteri a partire dall'indice i |
| .IndexOf(s) | Indice della prima occorrenza di s (-1 se assente) |
| .Split(sep) | Divide la stringa in un array usando sep come separatore |
| string.Join(sep, arr) | Unisce gli elementi di arr con il separatore sep |
string frase = " Ciao, Mondo! ";
Console.WriteLine(frase.Trim()); // "Ciao, Mondo!"
Console.WriteLine(frase.Trim().ToLower()); // "ciao, mondo!"
Console.WriteLine(frase.Trim().Length); // 12
Console.WriteLine(frase.Contains("Mondo")); // True
Console.WriteLine(frase.Replace("Mondo", "C#")); // " Ciao, C#! "
string parte = "abcdefgh";
Console.WriteLine(parte.Substring(2, 4)); // "cdef"
Console.WriteLine(parte.IndexOf("de")); // 3
Split e Join permettono di convertire una stringa in array e viceversa: molto utili per elaborare dati in formato CSV o percorsi di file.
string csv = "mela,pera,banana,kiwi";
// Split: da stringa ad array
string[] frutti = csv.Split(',');
foreach (string f in frutti)
Console.WriteLine(f); // mela / pera / banana / kiwi
// Join: da array a stringa
string lista = string.Join(" - ", frutti);
Console.WriteLine(lista); // mela - pera - banana - kiwi
Quando occorre costruire una stringa con molte operazioni (ad esempio in un ciclo), StringBuilder lavora su un buffer interno ed è molto più efficiente del +.
using System.Text;
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 5; i++)
{
sb.Append($"riga {i}\n");
}
string risultato = sb.ToString();
Console.WriteLine(risultato);