Metodo String.Compare (String, String, CultureInfo, CompareOptions)
Aggiornamento: Luglio 2008
Confronta due oggetti String specificati, utilizzando le opzioni di confronto specificate e le informazioni specifiche delle impostazioni cultura per influenzare il confronto, e restituisce un numero intero che indica la relazione reciproca tra le due stringhe nell'ordinamento.
Assembly: mscorlib (in mscorlib.dll)
public static int Compare( string strA, string strB, CultureInfo culture, CompareOptions options )
public static int Compare( String strA, String strB, CultureInfo culture, CompareOptions options )
public static function Compare( strA : String, strB : String, culture : CultureInfo, options : CompareOptions ) : int
Parametri
- strA
- Tipo: System.String
Prima stringa.
- strB
- Tipo: System.String
Seconda stringa.
- culture
- Tipo: System.Globalization.CultureInfo
Impostazioni cultura che forniscono le informazioni di confronto specifiche.
- options
- Tipo: System.Globalization.CompareOptions
Opzioni da utilizzare durante l'esecuzione del confronto (ad esempio, per ignorare la distinzione tra maiuscole e minuscole o i simboli).
Valore restituito
Tipo: System.Int32Valore integer con segno a 32 bit che indica la relazione lessicale tra strA e strB, come illustrato nella tabella seguente.
Value | Condizione |
|---|---|
Minore di zero | Il parametro strA è minore del parametro strB. |
Zero | Il parametro strA è uguale al parametro strB. |
Maggiore di zero | strA è maggiore di strB . |
| Eccezione | Condizione |
|---|---|
| ArgumentException | Il parametro options non è un valore dell'oggetto CompareOptions. |
| ArgumentNullException | cultureè null. |
Nel confronto viene utilizzato il parametro culture per ottenere le informazioni specifiche delle impostazioni cultura, quali ad esempio le regole relative all'utilizzo di maiuscole e minuscole e l'ordine alfabetico dei singoli caratteri. Per determinate impostazioni cultura, ad esempio, potrebbe essere specificato che alcune combinazioni di caratteri vengano considerate come un carattere singolo, oppure potrebbe essere prevista una particolare modalità di confronto per i caratteri maiuscoli e minuscoli, o ancora il criterio di ordinamento di un carattere potrebbe dipendere dal carattere che lo precede o segue.
Attenzione: |
|---|
Il metodo Compare(String, String, CultureInfo, CompareOptions) è stato progettato principalmente per l'utilizzo nelle operazioni di ordinamento, anche di tipo alfabetico. Non deve essere utilizzato nei casi in cui lo scopo primario della chiamata al metodo sia determinare l'equivalenza di due stringhe, vale a dire verificare che un valore restituito sia pari a zero. Per stabilire se due stringhe sono equivalenti, chiamare il metodo Equals. |
Il confronto può essere ulteriormente specificato mediante il parametro options, costituito da uno o più membri dell'enumerazione CompareOptions. Tuttavia, poiché lo scopo di questo metodo è eseguire un confronto tra stringhe dipendente dalle impostazioni cultura, i valori CompareOptions.Ordinal e CompareOptions.OrdinalIgnoreCase non hanno effetto.
Uno o entrambi i termini di confronto possono essere null. Per definizione qualsiasi stringa, compresa String.Empty, risulta maggiore di un riferimento null, mentre due riferimenti null risultano uguali tra loro.
Il confronto termina quando viene rilevata una disuguaglianza o quando entrambe le stringhe sono state confrontate. Se però le due stringhe risultano uguali alla fine di una delle due, ma nell'altra restano ancora caratteri, quest'ultima verrà considerata maggiore.
Nell'esempio seguente vengono confrontate due stringhe in tre modi diversi: utilizzando il confronto linguistico per le impostazioni cultura en-US; utilizzando il confronto linguistico con distinzione tra maiuscole e minuscole per le impostazioni cultura en-US; utilizzando un confronto ordinale. Tutto ciò per illustrare come i tre metodi di confronto producano tre risultati diversi.
using System; using System.Globalization; public class Example { public static void Main() { string string1 = "brother"; string string2 = "Brother"; string relation; int result; // Cultural (linguistic) comparison. result = String.Compare(string1, string2, new CultureInfo("en-US"), CompareOptions.None); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); // Cultural (linguistic) case-insensitive comparison. result = String.Compare(string1, string2, new CultureInfo("en-US"), CompareOptions.IgnoreCase); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); // Culture-insensitive ordinal comparison. result = String.CompareOrdinal(string1, string2); if (result > 0) relation = "comes after"; else if (result == 0) relation = "is the same as"; else relation = "comes before"; Console.WriteLine("'{0}' {1} '{2}'.", string1, relation, string2); } } // The example produces the following output: // 'brother' comes before 'Brother'. // 'brother' is the same as 'Brother'. // 'brother' comes after 'Brother'.
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Attenzione: