Esecuzione di confronti di stringhe indipendenti dalle impostazioni cultura
Aggiornamento: novembre 2007
Per impostazione predefinita, il metodo Compare consente di eseguire confronti dipendenti dalle impostazioni cultura e con distinzione tra maiuscole e minuscole. Viene tuttavia fornito un overload del metodo String.Compare che consente di specificare le impostazioni cultura 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 dalle impostazioni cultura. Per le operazioni dipendenti dalle impostazioni cultura, specificare la proprietà CultureInfo.CurrentCulture come parametro culture. Per le operazioni indipendenti dalle impostazioni cultura, 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 dalle impostazioni cultura 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 dalle impostazioni cultura possono provocare risultati incoerenti, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati.
Gli overload del metodo String.CompareTo consentono di eseguire confronti dipendenti dalle impostazioni cultura con distinzione tra maiuscole e minuscole per impostazione predefinita. Non sono tuttavia disponibili overload di questo metodo che consentono di specificare un confronto indipendente dalle impostazioni cultura. Per motivi di chiarezza, si raccomanda di utilizzare invece il metodo String.Compare, specificando CultureInfo.CurrentCulture per le operazioni che dipendono dalle impostazioni cultura e CultureInfo.InvariantCulture per le operazioni indipendenti dalle impostazioni cultura.
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 dalle impostazioni cultura 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 dalle impostazioni cultura, vedere Confronto e ordinamento di dati per specifiche impostazioni cultura.
Per rendere questa operazione indipendente dalle impostazioni cultura, è 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 dalle impostazioni cultura 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 dalle impostazioni cultura e con distinzione tra maiuscole e minuscole.
Dim compareResult As Integer = string1.CompareTo(string2)
int compareResult = string1.CompareTo(string2);
Poiché il parametro culture non viene passato in modo esplicito, lo scopo dell'esempio sopra riportato è ambiguo. Per specificare se l'applicazione è dipendente o indipendente dalle impostazioni cultura, è necessario che il metodo String.CompareTo venga sostituito con il metodo String.Compare. Per eseguire un confronto dipendente dalle impostazioni cultura con distinzione tra maiuscole e minuscole tra string1 e string2, l'applicazione deve passare CultureInfo.CurrentCulture come parametro culture. In questo modo vengono utilizzati i mapping di maiuscole e minuscole e le regole di ordinamento di CurrentCulture, come dimostrato 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 dalle impostazioni cultura con distinzione tra maiuscole e minuscole tra string1 e string2, l'applicazione deve passare CultureInfo.InvariantCulture come parametro culture. In questo modo vengono utilizzati i mapping di maiuscole e minuscole e le regole di ordinamento di InvariantCulture, come dimostrato 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 dalle impostazioni cultura, vedere Utilizzo del metodo String.Compare.
Vedere anche
Concetti
Confronto e ordinamento di dati per specifiche impostazioni cultura
Riferimenti
Altre risorse
Esecuzione di operazioni sulle stringhe indipendenti dalla lingua