Confrontare le stringhe in .NET

.NET offre diversi metodi per confrontare i valori delle stringhe. La tabella seguente elenca e descrive i metodi di confronto di valori.

Nome metodo Utilizzo
String.Compare Confronta i valori di due stringhe. Restituisce un valore intero.
String.CompareOrdinal Confronta due stringhe senza tenere in considerazione le impostazioni cultura locali. Restituisce un valore intero.
String.CompareTo Confronta l'oggetto stringa corrente con un'altra stringa. Restituisce un valore intero.
String.StartsWith Determina se una stringa inizia con la stringa passata. Restituisce un valore booleano.
String.EndsWith Determina se una stringa finisce con la stringa passata. Restituisce un valore booleano.
String.Contains Determina se un carattere o una stringa si verifica all'interno di un'altra stringa. Restituisce un valore booleano.
String.Equals Determina se due stringhe sono uguali. Restituisce un valore booleano.
String.IndexOf Restituisce la posizione di indice di un carattere o una stringa, a partire dall'inizio della stringa esaminata. Restituisce un valore intero.
String.LastIndexOf Restituisce la posizione di indice di un carattere o una stringa, a partire dalla fine della stringa esaminata. Restituisce un valore intero.

Metodo Compare

Il metodo statico String.Compare consente di confrontare due stringhe. Questo metodo fa distinzione tra le impostazioni cultura. È possibile usare questa funzione per confrontare due stringhe o le sottostringhe di due stringhe. Sono inoltre disponibili overload che consentono o meno di fare distinzione tra maiuscole e minuscole e di tenere o meno in considerazione le differenze nelle impostazioni cultura. La tabella seguente illustra i tre valori interi che questo metodo può restituire.

Valore restituito Condizione
Intero negativo La prima stringa precede la seconda stringa nella sequenza di ordinamento.

oppure

La prima stringa è null.
0 La prima stringa e la seconda stringa sono uguali.

oppure

Entrambe le stringhe sono null.
Numero intero positivo

oppure

1
La prima stringa segue la seconda stringa nella sequenza di ordinamento.

oppure

La seconda stringa è null.

Importante

Il metodo String.Compare è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe. Non usare il metodo String.Compare per verificare l'uguaglianza (ovvero, per cercare in modo esplicito un valore restituito pari a 0 senza considerare se una stringa è minore o maggiore di un'altra). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison) .

L'esempio seguente usa il metodo String.Compare per determinare i valori relativi di due stringhe.

String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

L'esempio visualizza -1 nella console.

L'esempio precedente fa distinzione tra le impostazioni cultura per impostazione predefinita. Per eseguire un confronto tra stringhe senza fare distinzione tra le impostazioni cultura, usare un overload del metodo String.Compare, che consente di specificare le impostazioni cultura da usare tramite un parametro culture. Per un esempio che illustra come usare il metodo String.Compare per eseguire un confronto senza distinzione tra le impostazioni cultura, vedere Confronti di stringhe indipendenti dalle impostazioni cultura.

Metodo CompareOrdinal

Il metodo String.CompareOrdinal confronta due oggetti stringa senza considerare le impostazioni cultura locali. I valori restituiti da questo metodo sono identici a quelli restituiti dal metodo Compare nella tabella precedente.

Importante

Il metodo String.CompareOrdinal è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe. Non usare il metodo String.CompareOrdinal per verificare l'uguaglianza (ovvero, per cercare in modo esplicito un valore restituito pari a 0 senza considerare se una stringa è minore o maggiore di un'altra). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison) .

L'esempio seguente usa il metodo CompareOrdinal per confrontare i valori di due stringhe.

String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

L'esempio visualizza -32 nella console.

Metodo CompareTo

Il metodo String.CompareTo confronta la stringa incapsulata dall'oggetto stringa corrente con un altro oggetto o stringa. I valori restituiti da questo metodo sono identici a quelli restituiti dal metodo String.Compare nella tabella precedente.

Importante

Il metodo String.CompareTo è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe. Non usare il metodo String.CompareTo per verificare l'uguaglianza (ovvero, per cercare in modo esplicito un valore restituito pari a 0 senza considerare se una stringa è minore o maggiore di un'altra). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison) .

L'esempio seguente usa il metodo String.CompareTo per confrontare l'oggetto string1 con l'oggetto string2 .

String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

L'esempio visualizza -1 nella console.

Tutti gli overload del metodo String.CompareTo eseguono per impostazione predefinita confronti che fanno distinzione tra le impostazioni cultura e tra maiuscole e minuscole. Non sono disponibili overload di questo metodo per eseguire un confronto senza distinzione tra le impostazioni cultura. Per maggiore chiarezza del codice, è consigliabile usare invece il metodo String.Compare, specificando CultureInfo.CurrentCulture per operazioni con distinzione tra le impostazioni cultura o CultureInfo.InvariantCulture per operazioni senza distinzione tra le impostazioni cultura. Per un esempio che illustra come usare il metodo String.Compare per eseguire confronti con e senza distinzione tra le impostazioni cultura, vedere Esecuzione di confronti di stringhe indipendenti dalle impostazioni cultura.

Metodo Equals

Il metodo String.Equals consente di determinare in modo semplice se due stringhe sono uguali. Questo metodo, che fa distinzione tra maiuscole e minuscole, restituisce un valore booleano true o false. Può essere usato da una classe esistente, come illustrato nell'esempio seguente. L'esempio seguente usa il metodo Equals per determinare se un oggetto stringa contiene la frase "Hello World".

String^ string1 = "Hello World";
Console::WriteLine(string1->Equals("Hello World"));
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

L'esempio visualizza True nella console.

Questo metodo può anche essere usato come metodo statico. L'esempio seguente confronta due oggetti stringa tramite un metodo statico.

String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

L'esempio visualizza True nella console.

Metodi StartsWith e EndsWith

È possibile usare il metodo String.StartsWith per determinare se un oggetto stringa inizia con gli stessi caratteri inclusi in un'altra stringa. Questo metodo, che fa distinzione tra maiuscole e minuscole, restituisce true se l'oggetto stringa corrente inizia con la stringa passata e false in caso contrario. L'esempio seguente usa questo metodo per determinare se un oggetto stringa inizia con "Hello".

String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

L'esempio visualizza True nella console.

Il metodo String.EndsWith confronta una stringa passata con i caratteri presenti alla fine dell'oggetto stringa corrente. Anch'esso restituisce un valore booleano. L'esempio seguente verifica la fine di una stringa usando il metodo EndsWith.

String^ string1 = "Hello World";
Console::WriteLine(string1->EndsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

L'esempio visualizza False nella console.

Metodi IndexOf e LastIndexOf

È possibile usare il metodo String.IndexOf per determinare la posizione della prima occorrenza di un carattere specifico all'interno di una stringa. Questo metodo, che fa distinzione tra maiuscole e minuscole, inizia il conteggio dall'inizio di una stringa e restituisce la posizione di un carattere passato usando un indice in base zero. Se il carattere non viene trovato, viene restituito un valore -1.

L'esempio seguente usa il metodo IndexOf per cercare la prima occorrenza del carattere "l" in una stringa.

String^ string1 = "Hello World";
Console::WriteLine(string1->IndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

L'esempio visualizza 2 nella console.

Il metodo String.LastIndexOf è simile al metodo String.IndexOf, con la differenza che restituisce la posizione dell'ultima occorrenza di un carattere specifico all'interno di una stringa. Anch'esso fa distinzione tra maiuscole e minuscole e usa un indice in base zero.

L'esempio seguente usa il metodo LastIndexOf per cercare l'ultima occorrenza del carattere "l" in una stringa.

String^ string1 = "Hello World";
Console::WriteLine(string1->LastIndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

L'esempio visualizza 9 nella console.

Entrambi i metodi sono utili quando vengono usati in combinazione con il metodo String.Remove. È possibile usare il metodo IndexOf o LastIndexOf per recuperare la posizione di un carattere e quindi specificare tale posizione nel metodo Remove per rimuovere un carattere o una parola che inizia con tale carattere.

Vedi anche