back to top

Lavorare con le stringhe in C#

In informatica possiamo definire una stringa come una sequenza di caratteri con un ordine predefinito. Le stringhe sono fondamentali per la programmazione in C# perché permettono di gestire un certo tipo di informazione. Possiamo anche dire che una stringa è come un "array particolare" dove ad ogni posizione è presente un particolare carattere.

Vediamo un primo esempio per meglio chiarire la somiglianza con gli array:

string test1 = "Ciao";
Console.Write(test1[0]);
Console.ReadLine();

L’esempio qui sopra ci mostra come sia possibile leggere una stringa proprio come fosse un array. Infatti dalla stringa test1 mostriamo solo il primo carattere usando l’indice zero, proprio come avremmo fatto se avessimo voluto recuperare il primo item di un vettore.

Se avessimo voluto stampare a video l’intera stringa (quindi non solo il primo carattere) avremmo usato:

Console.Write(test1);

In C# possiamo effettuare praticamente qualunque operazione sulle stringhe grazie alle classi del Framework. In questa lezione della nostra guida vedremo come lavorare con le stringhe e compiere le operazioni più comuni.

Convertire un numero in stringa con C#

In generale possiamo convertire qualunque tipo di dato in string utilizzando il metodo ToString, ad esempio:

int anno = 1976;
string msg = "Sono nato nel " + anno.ToString();
System.Console.WriteLine(msg);

Trasformare una stringa in maiuscolo o minuscolo con C#

Possiamo modificare una stringa convertendola in maiuscolo mediante il metodo ToUpper in questo modo:

System.Console.WriteLine(msg.ToUpper());

oppure in minuscolo mediante il metodo ToLower:

System.Console.WriteLine(msg.ToLower());

Concatenare due stringhe in C#

Attraverso la concatenazione, due o più stringhe vengono "unite" secondo l’ordine fissato dallo sviluppatore. Vediamo, di seguito, come concatenare due (o più) stringhe in C#:

string test1 = "Ciao";
string test2 = ", come stai?";
string test3 = test1 + test2;
Console.Write(test3);
Console.ReadLine();

Come possiamo vedere nell’esempio, abbiamo utilizzato l’operatore + per concatenare le due stringhe.

L’oggeto StringBuilder

Per operazioni complesse sulle stringhe, al fine di ottimizzare l’utilizzo delle risorse di sistema, può essere conveniente usare l’oggetto StringBuilder. Vediamo un esempio di concatenazione di stringhe gestite in questo modo:

System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("uno ");
sb.Append("due ");
sb.Append("tre");
string str = sb.ToString();
Console.Write(str);
Console.ReadLine();

Come potete notare abbiamo utilizzato il metodo Append per concatenare diverse stringhe, dopodiché abbiamo utilizzato il metodo ToString per convertire l’oggetto "sb" in una stringa.

Oltre al metodo Append, l’oggetto StringBuilder prevede altri metodi tra cui:

  • Insert – Inserisce una stringa o un oggetto nell’indice specificato dell’oggetto StringBuilder corrente;
  • Remove – Rimuove un numero specificato di caratteri dall’oggetto StringBuilder corrente;
  • Replace – Sostituisce un determinato carattere nell’indice specificato.

Cercare all’interno di una stringa con C#

Per cercare dentro una stringa si usa IndexOf, che da -1 se non trova la stringa specificata, viceversa restituirà la prima posizione dove trova la prima occorrenza:

string color1 = "verde";
string color2 = "verde1";
int posizione = color2.IndexOf(color1);
if (posizione > -1) {
  ...
}

Suddividere una stringa con C#

E’ possibile suddividere una stringa in ulteriori stringhe, usando il metodo Split. Vediamo un esempio:

char[] delimitatore = new char[] { ' ' };
string stringa = "Il cane stava dormendo.";
foreach (string substringa in stringa.Split(delimitatore)) {
  System.Console.WriteLine(substringa);
}

Nel caso sopra si usa un array che contiene il carattere che serve per indicare al compilatore dove spezzare la stringa (in questo caso uno spazio); "delimitatore" è un semplice array di tipo char, "substringa" contiene le varie stringhe spezzate attraverso Split(delimitatore).

Estrarre una porzione di una stringa

Se vogliamo estrarre una parte di stringa con C# possiamo usare il metodo Substring in questo modo:

string test1 = "Mr. Webmaster";
test1 = test1.Substring(0, 6);

Nel nostro esempio, il metodo Substring restituirà una porzione della nostra stringa partendo dall’indice specificato come primo argomento (nell’esempio 0) e prendendo la quantità di elementi indicata nel secondo argomento (nel nostro esempio 5). Il risultato sarà:

Mr. We

Volendo è possibile usare Substring anche in questo modo:

test1 = test1.Substring(2);

Così facendo estrarremo tutta la stringa partendo dalla 3 posizione (che corrisponde, come sappiamo, all’indice 2).

Sostituire caratteri all’interno di una stringa con C#

Con C# possiamo sostituire, all’interno di una stringa, un carattere o una serie di caratteri mediante il metodo Replace. Vediamo un esempio:

string msg = "Ciao sono nato";
System.Console.WriteLine(msg.Replace("a","o"));

Nel caso sopra viene sostituita la a con la o tutte le volte.

Come avrete capito, il metodo Replace viene applicato alla stringa e accetta due argomenti: il primo corrisponde al/i carattere/i da sostituire, mentre il secondo indica i caratteri che ne prenderanno il posto.

Confrontare due stringhe in C#

Con C# è possibile effettuare confronti tra due stringhe mediante l’operatore di uguaglianza:

string color1 = "verde";
string color2 = "giallo";
if (color1 == color2) {
  ...
}

Oppure possiamo usare il metodo CompareTo il quale restituirà 0 se le due stringhe confrontate sono uguali. Ad esempio:

string color1 = "verde";
string color2 = "verde";
if (color1.CompareTo(color2) == 0) {
  ...
}
Pubblicitร 
Articolo precedente
Articolo successivo