Esecuzione di confronti di stringhe indipendenti dalla lingua

Per impostazione predefinita, il metodo Compare consente di eseguire confronti dipendenti dalla lingua e con distinzione tra maiuscole e minuscole. Viene tuttavia fornito un overload del metodo String.Compare che consente di specificare la lingua da utilizzare mediante un parametro culture. È opportuno che nel codice dell'applicazione venga chiaramente indicato se un'operazione sulle stringhe deve essere dipendente o indipendente dalla lingua. Per le operazioni dipendenti dalla lingua, specificare la proprietà CultureInfo.CurrentCulture come parametro culture. Per le operazioni indipendenti dalla lingua, specificare la proprietà CultureInfo.InvariantCulture come parametro culture.

Se una decisione relativa alla sicurezza è basata sul risultato di un confronto di stringhe, è necessario che l'operazione sia indipendente dalla lingua in modo che il risultato non venga influenzato dal valore di CultureInfo.CurrentCulture. Per un esempio in cui viene illustrato come i confronti di stringhe dipendenti dalla lingua possono provocare risultati incoerenti, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati.

Per impostazione predefinita, gli overload del metodo String.CompareTo consentono di eseguire confronti dipendenti dalla lingua e con distinzione tra maiuscole e minuscole. Non sono tuttavia disponibili overload di questo metodo che consentono di specificare un confronto indipendente dalla lingua. Per motivi di chiarezza, si raccomanda di utilizzare invece il metodo String.Compare, specificando CultureInfo.CurrentCulture per le operazioni che dipendono dalla lingua e CultureInfo.InvariantCulture per le operazioni indipendenti dalla lingua.

Utilizzo del metodo String.Compare

Nella riga di codice riportata di seguito viene illustrato come utilizzare il metodo String.Compare per eseguire un confronto dipendente dalla lingua e con distinzione tra maiuscole e minuscole tra string1 e string2. Come parametro culture viene passato CultureInfo.CurrentCulture, con cui viene indicato che verranno utilizzati i mapping di maiuscole e minuscole e le regole di ordinamento di CurrentCulture.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);

Per un esempio di codice completo relativo all'utilizzo del metodo String.Compare per l'esecuzione di confronti dipendenti dalla lingua, vedere Confronto e ordinamento di dati per una lingua specifica.

Per rendere questa operazione indipendente dalla lingua, è necessario specificare CultureInfo.InvariantCulture come parametro culture, come illustrato nella riga di codice di esempio riportata di seguito.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);

Nell'esempio di codice riportato di seguito viene illustrato come eseguire un confronto di stringhe indipendente dalla lingua utilizzando la precedente riga di codice.

Imports System
Imports System.Globalization

Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        
        Dim compareResult As Integer = String.Compare(string1, string2, _
            False, CultureInfo.InvariantCulture)   
        Console.WriteLine("A case-insensitive comparison of {0} and {1} is _
            {2}", string1, string2, compareResult)
    End Sub
End Class
using System;
using System.Globalization;

public class CompareSample
{
    public static void Main()
    {
        String string1 = "file";
        String string2 = "FILE";

        int compareResult = String.Compare(string1, string2, false, 
        CultureInfo.InvariantCulture);
        Console.WriteLine("A case-insensitive comparison of {0} and {1} is 
            {2}", string1, string2, compareResult);
    }
}

Utilizzo del metodo String.CompareTo

Nell'esempio riportato di seguito, il metodo String.CompareTo viene utilizzato per eseguire un confronto tra string1 e string2. Per impostazione predefinita, viene eseguito un confronto dipendente dalla lingua e con distinzione tra maiuscole e minuscole.

Dim compareResult As Integer = string1.CompareTo(string2)
int compareResult = string1.CompareTo(string2);

Poiché non viene passato in modo esplicito un parametro culture, lo scopo dell'esempio sopra riportato risulta ambiguo. È quindi opportuno sostituire il metodo String.CompareTo con il metodo String.Compare per indicare con maggiore chiarezza se si desidera che l'operazione sia dipendente o indipendente dalla lingua. Per eseguire un confronto dipendente dalla lingua con distinzione tra maiuscole e minuscole tra string1 e string2, passare CultureInfo.CurrentCulture come parametro culture. In questo modo verranno utilizzati i mapping di maiuscole e minuscole e le regole di ordinamento di CurrentCulture, come illustrato nell'esempio riportato di seguito.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.CurrentCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.CurrentCulture);

Per eseguire un confronto indipendente dalla lingua con distinzione tra maiuscole e minuscole tra string1 e string2, passare CultureInfo.InvariantCulture come parametro culture. In questo modo verranno utilizzati i mapping di maiuscole e minuscole e le regole di ordinamento di InvariantCulture, come illustrato nell'esempio riportato di seguito.

Dim compareResult As Integer = String.Compare(string1, string2, False, CultureInfo.InvariantCulture)
int compareResult = String.Compare(string1, string2, false, CultureInfo.InvariantCulture);

Per un esempio di codice completo relativo all'utilizzo del metodo String.Compare per ottenere risultati indipendenti dalla lingua, vedere Utilizzo del metodo String.Compare.

Vedere anche

Riferimenti

String.Compare Method
String.CompareTo Method

Concetti

Confronto e ordinamento di dati per una lingua specifica

Altre risorse

Esecuzione di operazioni sulle stringhe indipendenti dalla lingua