Eseguire confronti di stringhe senza distinzione di 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 usare e il parametro comparisonType
che consente di specificare le regole di confronto da usare. La chiamata di questi metodi invece dell'overload predefinito rimuove qualsiasi ambiguità sulle regole usate in una particolare chiamata al metodo e chiarisce se un particolare confronto dipende o meno dalle impostazioni cultura.
Nota
Entrambi gli overload del metodo String.CompareTo eseguono confronti dipendenti dalle impostazioni cultura e con distinzione tra maiuscole e minuscole. Non è possibile usare questo metodo per eseguire confronti indipendenti dalle impostazioni cultura. Per motivi di chiarezza, in alternativa, si consiglia di usare 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 usando 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.
Usare 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 usano 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 senza distinzione di impostazioni cultura, .NET definisce impostazioni cultura inglese non dipendenti da paese/area geografica basate 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.
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
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
È possibile scaricare le tabelle di ordinamento spessore, un set di file di testo che contengono informazioni sugli spessori dei caratteri usati nelle operazioni di ordinamento e confronto per i sistemi operativi Windows, e la tabella degli elementi delle regole di confronto Unicode predefinite, la tabella di ordinamento spessore per Linux e MacOS.