CodeGym /Corsi /C# SELF /Metodi principali della classe string

Metodi principali della classe string

C# SELF
Livello 9 , Lezione 3
Disponibile

1. Introduzione

Nella pratica, i task più comuni con le stringhe sono questi:

  • Ottenere la lunghezza della stringa (e capire se è vuota).
  • Cambiare il case delle lettere (tutto MAIUSCOLO o tutto minuscolo).
  • Verificare se la stringa contiene una parola o un carattere specifico.
  • Sostituire una "parola brutta" con una più carina.
  • Dividere la stringa in parti usando un separatore ("lista di telefoni separati da virgola").
  • Togliere gli spazi all'inizio e alla fine della stringa.
  • Estrarre una parte della stringa (tipo le prime 3 lettere del cognome).
  • Confrontare due stringhe — sono uguali se ignoro il case?

Per ognuno di questi task, la classe string ha il suo metodo.

Tabella dei metodi chiave

Operazione Metodo/Proprietà Esempio
Lunghezza della stringa
Length
name.Length
Primo carattere
[0]
name[0]
Ultimo carattere
[name.Length - 1]
name[name.Length - 1]
In minuscolo
ToLower()
name.ToLower()
In maiuscolo
ToUpper()
name.ToUpper()
Verificare se contiene sottostringa
Contains()
name.Contains("Ivan")
Posizione della sottostringa
IndexOf()
name.IndexOf("a")
Estrarre parte della stringa
Substring()
name.Substring(1, 3)
Confrontare stringhe
Equals(), ==
name.Equals("Pietro")
Togliere spazi
Trim()
name.Trim()
Dividere per separatore
Split()
csv.Split(',')
Unire array in una stringa
string.Join()
string.Join("-", array)
Sostituire parte
Replace()
text.Replace("vecchio", "nuovo")
Stringa vuota?
IsNullOrEmpty()
string.IsNullOrEmpty(name)

Oggi ne vediamo alcuni insieme.

2. Lavorare con la stringa come con un array

Lunghezza della stringa: proprietà Length

La cosa più semplice — scoprire quanti caratteri ci sono in una stringa. Per questo usiamo la proprietà Length. Esempio:

string name = "Arkadiy";
Console.WriteLine(name.Length);  // Mostra: 7
  • Length è una proprietà (non un metodo), quindi niente parentesi.
  • Se la stringa è vuota (""), la lunghezza sarà 0.

A volte è utile controllare la lunghezza della stringa prima di fare qualcosa di "rischioso" (tipo prendere una sottostringa).

Ottenere un carattere per indice: indicizzatore [i]

Come con gli array: una stringa è un array di caratteri. Esempio:

string hello = "Privet";
char firstChar = hello[0]; 	// 'P'
char lastChar = hello[^1]; 	// 't'
Console.WriteLine(firstChar);
  • L'indicizzazione parte da zero!
  • Attenzione: se provi ad accedere a un indice che non esiste (hello[100]), ti becchi un'eccezione.

3. Confronto tra stringhe

Operatori == e != sulle stringhe

In C#, questi operatori confrontano semplicemente due stringhe per contenuto.

string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true

Metodo Equals

A differenza dell'operatore ==, il metodo Equals può prendere parametri. Per esempio, puoi confrontare stringhe ignorando il case — quando "Mama" == "mama" e anche "MAMA". Esempio:

string pass1 = "Qwerty";
string pass2 = "qwerty";

// confronto standard con distinzione tra maiuscole/minuscole
bool isSame = pass1.Equals(pass2); // false

// confronto senza distinzione tra maiuscole/minuscole
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true

4. Cambiare il case

Per trasformare una stringa in maiuscolo (o minuscolo), la classe string ha 2 metodi speciali: ToLower() e ToUpper().

Vuoi che l'utente veda il tuo messaggio in stile "IMPORTANTE!"? O magari vuoi portare tutti i nomi in minuscolo per confrontarli? Facile:

string text = "Mne Ne Strashen Seryy Volk!";
Console.WriteLine(text.ToUpper()); // MNE NE STRASHEN SERYI VOLK!
Console.WriteLine(text.ToLower()); // mne ne strashen seryi volk!
  • Nota: la stringa originale non cambia!
  • Puoi usarlo per confrontare stringhe senza badare al case.

5. Togliere gli spazi inutili

E se l'utente per sbaglio (o apposta, vai a sapere) mette spazi prima o dopo il nome? Trim ti salva! Esiste in tre versioni:

  • Trim — toglie tutti gli spazi all'inizio e alla fine della stringa;
  • TrimStart — toglie gli spazi solo all'inizio;
  • TrimEnd — toglie gli spazi solo alla fine.
string raw = "   Gosha   ";
string cleaned = raw.Trim(); 		// "Gosha"
Console.WriteLine($"[{cleaned}]");

6. Ottenere una sottostringa: Substring

A volte serve estrarre solo una parte della stringa.

string word = "Privet";
string part = word.Substring(2);      // "ivet"
string part2 = word.Substring(2, 3);  // "ive"
  • Substring(startIndex) — dal carattere startIndex fino alla fine.
  • Substring(startIndex, length) — a partire da startIndex per tanti caratteri quanti length.

Attenzione: se vai fuori dai limiti della stringa o length < 0, ti becchi un'eccezione!

7. Controllare se la stringa è vuota

Prima di usare una stringa (tipo in interpolazione), meglio controllare che non sia null e non sia vuota, altrimenti rischi errori o risultati strani.

a) Controllo di null con l'operatore ==

string s = null;
if (s == null)
    Console.WriteLine("La stringa è null");

Contro: non becca la stringa vuota ("").

b) Controllo con string.IsNullOrEmpty()

Controlla sia null che la stringa vuota:

string s = "";
if (string.IsNullOrEmpty(s))
    Console.WriteLine("La stringa è vuota o null");

c) Controllo con string.IsNullOrWhiteSpace()

In più considera anche le stringhe fatte solo di spazi, tab e altri caratteri “invisibili”:

string s = "     ";
if (string.IsNullOrWhiteSpace(s))
    Console.WriteLine("La stringa è vuota, null o solo di spazi");

8. Errori tipici con i metodi delle stringhe

  • Il più comune — dimenticare che le stringhe sono immutabili (immutable), come abbiamo già visto sopra.
  • Un altro errore popolare — dimenticare la distinzione tra maiuscole/minuscole quando cerchi o confronti.

Per esempio, se l'utente inserisce il nome "andrey", ma nella lista c'è già "Andrey", usare semplicemente Contains o == potrebbe non funzionare, se non porti entrambe le stringhe allo stesso case o non usi la versione giusta del metodo.

Occhio anche ai metodi che restituiscono indici. Gli indici partono da zero, e se ti torna -1, vuol dire che non ha trovato niente, non che è "indice 0".

2
Compito
C# SELF, livello 9, lezione 3
Bloccato
Conteggio della lunghezza di una stringa e dei suoi caratteri iniziale e finale
Conteggio della lunghezza di una stringa e dei suoi caratteri iniziale e finale
2
Compito
C# SELF, livello 9, lezione 3
Bloccato
Rimozione degli spazi e conversione delle lettere maiuscole
Rimozione degli spazi e conversione delle lettere maiuscole
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION