Condividi tramite


Esecuzione di confronti di stringhe indipendenti dalle impostazioni cultura

Per impostazione predefinita, il metodo String.Compare consente di eseguire confronti dipendenti dalle impostazioni cultura e con distinzione tra maiuscole e minuscole. Questo metodo include anche molti overload che forniscono il parametro culture che consente di specificare le impostazioni cultura da utilizzare e il parametro comparisonType che consente di specificare le regole di confronto da utilizzare. La chiamata di questi metodi invece dell'overload predefinito rimuove qualsiasi ambiguità sulle regole utilizzate in una particolare chiamata al metodo e chiarisce se un particolare confronto dipende o meno dalle impostazioni cultura.

NotaNota

Entrambi gli overload del metodo String.CompareTo eseguono confronti dipendenti dalle impostazioni cultura e con distinzione tra maiuscole e minuscole. Non è possibile utilizzare questo metodo per eseguire confronti indipendenti dalle impostazioni cultura.Per motivi di chiarezza, in alternativa, si consiglia di utilizzare il metodo String.Compare.

Per le operazioni dipendenti dalle impostazioni cultura, specificare il valore di enumerazione StringComparison.CurrentCulture o StringComparison.CurrentCultureIgnoreCase come parametro comparisonType. Se si desidera eseguire un confronto dipendente dalle impostazioni cultura utilizzando impostazioni cultura definite diverse da quelle correnti, specificare l'oggetto CultureInfo che rappresenta quelle impostazioni cultura come parametro culture .

I confronti di stringhe indipendenti dalle impostazioni cultura supportati dal metodo String.Compare sono linguistici (basati sulle convenzioni di ordinamento della lingua inglese) o non linguistici (basati sul valore ordinale dei caratteri nella stringa). La maggior parte di confronti di stringhe indipendenti dalle impostazioni cultura non sono linguistici. Per questi confronti, specificare il valore di enumerazione StringComparison.Ordinal o StringComparison.OrdinalIgnoreCase come parametro comparisonType. Ad esempio, se una decisione relativa alla sicurezza (come ad esempio un confronto del nome utente o della password) è basata sul risultato di un confronto di stringhe, l'operazione dovrebbe essere indipendente dalle impostazioni cultura e non linguistica in modo che il risultato non venga influenzato dalle convenzioni di una lingua o da impostazioni cultura particolari. (Per un esempio in cui viene illustrato come i confronti di stringhe dipendenti dalle impostazioni cultura possono produrre risultati incoerenti, vedere Regole di ordinamento e mapping di maiuscole e minuscole personalizzati.)

Utilizzare il confronto di stringhe linguistico indipendente dalle impostazioni cultura se si desidera gestire stringhe linguisticamente importanti da più impostazioni cultura in modo coerente. Ad esempio, se l'applicazione visualizza parole che utilizzano più set di caratteri in una casella di riepilogo, è possibile che si desideri visualizzare parole nello stesso ordine indipendentemente dalle impostazioni cultura correnti. Per i confronti linguistici indipendenti dalle impostazioni cultura, .NET Framework definisce una lingua inglese basata sulle convenzioni linguistiche dell'inglese. Per eseguire un confronto linguistico indipendente dalle impostazioni cultura, specificare StringComparison.InvariantCulture o StringComparison.InvariantCultureIgnoreCase come parametro comparisonType.

Nell'esempio seguente vengono eseguiti due confronti di stringhe indipendenti dalle impostazioni cultura e non linguistici. Il primo, diversamente dal secondo, è con distinzione tra maiuscole e minuscole.

Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer

        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)   
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult) 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult) 
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.Ordinal, string1, string2, 
                          compareResult); 

        compareResult = String.Compare(string1, string2, 
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}", 
                          StringComparison.OrdinalIgnoreCase, string1, string2, 
                          compareResult); 
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Vedere anche

Riferimenti

String.Compare

String.CompareTo

Concetti

Confronto e ordinamento di dati per specifiche impostazioni cultura

Procedure consigliate per l'utilizzo di stringhe in .NET Framework

Altre risorse

Esecuzione di operazioni sulle stringhe indipendenti dalle impostazioni cultura

Cronologia delle modifiche

Data

Cronologia

Motivo

Maggio 2010

Rivisto per rispecchiare le procedure consigliate per la gestione delle stringhe.

Correzione di bug nel contenuto.