Confronto di stringhe in .NETComparing Strings in .NET

.NET offre diversi metodi per confrontare i valori delle stringhe..NET provides several methods to compare the values of strings. La tabella seguente elenca e descrive i metodi di confronto di valori.The following table lists and describes the value-comparison methods.

Nome metodoMethod name UsoUse
String.Compare Confronta i valori di due stringhe.Compares the values of two strings. Restituisce un valore intero.Returns an integer value.
String.CompareOrdinal Confronta due stringhe senza tenere in considerazione le impostazioni cultura locali.Compares two strings without regard to local culture. Restituisce un valore intero.Returns an integer value.
String.CompareTo Confronta l'oggetto stringa corrente con un'altra stringa.Compares the current string object to another string. Restituisce un valore intero.Returns an integer value.
String.StartsWith Determina se una stringa inizia con la stringa passata.Determines whether a string begins with the string passed. Restituisce un valore booleano.Returns a Boolean value.
String.EndsWith Determina se una stringa finisce con la stringa passata.Determines whether a string ends with the string passed. Restituisce un valore booleano.Returns a Boolean value.
String.Equals Determina se due stringhe sono uguali.Determines whether two strings are the same. Restituisce un valore booleano.Returns a Boolean value.
String.IndexOf Restituisce la posizione di indice di un carattere o una stringa, a partire dall'inizio della stringa esaminata.Returns the index position of a character or string, starting from the beginning of the string you are examining. Restituisce un valore intero.Returns an integer value.
String.LastIndexOf Restituisce la posizione di indice di un carattere o una stringa, a partire dalla fine della stringa esaminata.Returns the index position of a character or string, starting from the end of the string you are examining. Restituisce un valore intero.Returns an integer value.

CompareCompare

Il metodo statico String.Compare consente di confrontare due stringhe.The static String.Compare method provides a thorough way of comparing two strings. Questo metodo fa distinzione tra le impostazioni cultura.This method is culturally aware. È possibile usare questa funzione per confrontare due stringhe o le sottostringhe di due stringhe.You can use this function to compare two strings or substrings of two strings. 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.Additionally, overloads are provided that regard or disregard case and cultural variance. La tabella seguente illustra i tre valori interi che questo metodo può restituire.The following table shows the three integer values that this method might return.

Valore restituitoReturn value CondizioneCondition
Intero negativoA negative integer La prima stringa precede la seconda stringa nella sequenza di ordinamento.The first string precedes the second string in the sort order.

oppure-or-

La prima stringa è null.The first string is null.
00 La prima stringa e la seconda stringa sono uguali.The first string and the second string are equal.

oppure-or-

Entrambe le stringhe sono null.Both strings are null.
Intero positivoA positive integer

oppure-or-

11
La prima stringa segue la seconda stringa nella sequenza di ordinamento.The first string follows the second string in the sort order.

oppure-or-

La seconda stringa è null.The second string is null.

Importante

Il metodo String.Compare è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe.The String.Compare method is primarily intended for use when ordering or sorting strings. 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).You should not use the String.Compare method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

L'esempio seguente usa il metodo String.Compare per determinare i valori relativi di due stringhe.The following example uses the String.Compare method to determine the relative values of two strings.

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.This example displays -1 to the console.

L'esempio precedente fa distinzione tra le impostazioni cultura per impostazione predefinita.The preceding example is culture-sensitive by default. 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.To perform a culture-insensitive string comparison, use an overload of the String.Compare method that allows you to specify the culture to use by supplying a culture parameter. Per un esempio che illustra come usare il metodo String.Compare per eseguire un confronto senza distinzione tra le impostazioni cultura, vedere Esecuzione di confronti di stringhe indipendenti dalle impostazioni cultura.For an example that demonstrates how to use the String.Compare method to perform a culture-insensitive comparison, see Performing Culture-Insensitive String Comparisons.

CompareOrdinalCompareOrdinal

Il metodo String.CompareOrdinal confronta due oggetti stringa senza considerare le impostazioni cultura locali.The String.CompareOrdinal method compares two string objects without considering the local culture. I valori restituiti da questo metodo sono identici a quelli restituiti dal metodo Compare nella tabella precedente.The return values of this method are identical to the values returned by the Compare method in the previous table.

Importante

Il metodo String.CompareOrdinal è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe.The String.CompareOrdinal method is primarily intended for use when ordering or sorting strings. 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).You should not use the String.CompareOrdinal method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

L'esempio seguente usa il metodo CompareOrdinal per confrontare i valori di due stringhe.The following example uses the CompareOrdinal method to compare the values of two strings.

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.This example displays -32 to the console.

CompareToCompareTo

Il metodo String.CompareTo confronta la stringa incapsulata dall'oggetto stringa corrente con un altro oggetto o stringa.The String.CompareTo method compares the string that the current string object encapsulates to another string or object. I valori restituiti da questo metodo sono identici a quelli restituiti dal metodo String.Compare nella tabella precedente.The return values of this method are identical to the values returned by the String.Compare method in the previous table.

Importante

Il metodo String.CompareTo è destinato principalmente a essere usato quando si ordinano o si dispongono le stringhe.The String.CompareTo method is primarily intended for use when ordering or sorting strings. 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).You should not use the String.CompareTo method to test for equality (that is, to explicitly look for a return value of 0 with no regard for whether one string is less than or greater than the other). Per determinare se due stringhe sono uguali, usare invece il metodo String.Equals(String, String, StringComparison).Instead, to determine whether two strings are equal, use the String.Equals(String, String, StringComparison) method.

L'esempio seguente usa il metodo String.CompareTo per confrontare l'oggetto string1 con l'oggetto string2.The following example uses the String.CompareTo method to compare the string1 object to the string2 object.

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.This example displays -1 to the 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.All overloads of the String.CompareTo method perform culture-sensitive and case-sensitive comparisons by default. Non sono disponibili overload di questo metodo per eseguire un confronto senza distinzione tra le impostazioni cultura.No overloads of this method are provided that allow you to perform a culture-insensitive comparison. 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.For code clarity, we recommend that you use the String.Compare method instead, specifying CultureInfo.CurrentCulture for culture-sensitive operations or CultureInfo.InvariantCulture for culture-insensitive operations. 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.For examples that demonstrate how to use the String.Compare method to perform both culture-sensitive and culture-insensitive comparisons, see Performing Culture-Insensitive String Comparisons.

EqualsEquals

Il metodo Equals consente di determinare in modo semplice se due stringhe sono uguali.The String.Equals method can easily determine if two strings are the same. Questo metodo, che fa distinzione tra maiuscole e minuscole, restituisce un valore booleano true o false .This case-sensitive method returns a true or false Boolean value. Può essere usato da una classe esistente, come illustrato nell'esempio seguente.It can be used from an existing class, as illustrated in the next example. L'esempio seguente usa il metodo Equals per determinare se un oggetto stringa contiene la frase "Hello World".The following example uses the Equals method to determine whether a string object contains the phrase "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.This example displays True to the console.

Questo metodo può anche essere usato come metodo statico.This method can also be used as a static method. L'esempio seguente confronta due oggetti stringa tramite un metodo statico.The following example compares two string objects using a static method.

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.This example displays True to the console.

StartsWith ed EndsWithStartsWith and EndsWith

È possibile usare il metodo StartsWith per determinare se un oggetto stringa inizia con gli stessi caratteri inclusi in un'altra stringa.You can use the String.StartsWith method to determine whether a string object begins with the same characters that encompass another string. 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.This case-sensitive method returns true if the current string object begins with the passed string and false if it does not. L'esempio seguente usa questo metodo per determinare se un oggetto stringa inizia con "Hello".The following example uses this method to determine if a string object begins with "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.This example displays True to the console.

Il metodo EndsWith confronta una stringa passata con i caratteri presenti alla fine dell'oggetto stringa corrente.The String.EndsWith method compares a passed string to the characters that exist at the end of the current string object. Anch'esso restituisce un valore booleano.It also returns a Boolean value. L'esempio seguente verifica la fine di una stringa usando il metodo EndsWith .The following example checks the end of a string using the EndsWith method.

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.This example displays False to the console.

IndexOf e LastIndexOfIndexOf and LastIndexOf

È possibile usare il metodo IndexOf per determinare la posizione della prima occorrenza di un carattere specifico all'interno di una stringa.You can use the String.IndexOf method to determine the position of the first occurrence of a particular character within a string. 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.This case-sensitive method starts counting from the beginning of a string and returns the position of a passed character using a zero-based index. Se il carattere non viene trovato, viene restituito un valore -1.If the character cannot be found, a value of –1 is returned.

L'esempio seguente usa il metodo IndexOf per cercare la prima occorrenza del carattere 'l' in una stringa.The following example uses the IndexOf method to search for the first occurrence of the 'l' character in a string.

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.This example displays 2 to the console.

Il metodo LastIndexOf è simile al metodo IndexOf , con la differenza che restituisce la posizione dell'ultima occorrenza di un carattere specifico all'interno di una stringa.The String.LastIndexOf method is similar to the String.IndexOf method except that it returns the position of the last occurrence of a particular character within a string. Anch'esso fa distinzione tra maiuscole e minuscole e usa un indice in base zero.It is case-sensitive and uses a zero-based index.

L'esempio seguente usa il metodo LastIndexOf per cercare l'ultima occorrenza del carattere 'l' in una stringa.The following example uses the LastIndexOf method to search for the last occurrence of the 'l' character in a string.

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.This example displays 9 to the console.

Entrambi i metodi sono utili quando vengono usati in combinazione con il metodo String.Remove .Both methods are useful when used in conjunction with the String.Remove method. È 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.You can use either the IndexOf or LastIndexOf methods to retrieve the position of a character, and then supply that position to the Remove method in order to remove a character or a word that begins with that character.

Vedere ancheSee Also

Operazioni di base su stringheBasic String Operations
Esecuzione di operazioni sulle stringhe indipendenti dalle impostazioni culturaPerforming Culture-Insensitive String Operations