Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo String.Compare (String, String, Boolean, CultureInfo)

 

Confronta due oggetti String specificati, ignorando o rispettando la distinzione tra maiuscole e minuscole e usando le informazioni specifiche delle impostazioni cultura per influenzare il confronto, e restituisce un intero che ne indica la posizione relativa nell'ordinamento.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

public static int Compare(
	string strA,
	string strB,
	bool ignoreCase,
	CultureInfo culture
)

Parametri

strA
Type: System.String

Prima stringa da confrontare.

strB
Type: System.String

Seconda stringa da confrontare.

ignoreCase
Type: System.Boolean

true per ignorare la distinzione tra maiuscole e minuscole durante il confronto; in caso contrario, false.

culture
Type: System.Globalization.CultureInfo

Oggetto che fornisce informazioni di confronto specifiche delle impostazioni cultura.

Valore restituito

Type: System.Int32

Intero con segno a 32 bit che indica la relazione lessicale tra i due termini di confronto.

Valore

Condizione

Minore di zero

strA precede strB nell'ordinamento.

Zero

strA si trova nella stessa posizione di strB nell'ordinamento.

Maggiore di zero

strA segue strB nell'ordinamento.

Exception Condition
ArgumentNullException

culture è null.

Nel confronto viene utilizzato il culture parametro per ottenere informazioni specifiche delle impostazioni cultura, ad esempio le regole di maiuscole e minuscole e l'ordine alfabetico dei singoli caratteri. Le impostazioni cultura, ad esempio, possibile specificare che alcune combinazioni di caratteri siano considerate come un singolo carattere o caratteri maiuscoli e minuscoli da confrontare in modo che l'ordinamento di un carattere dipende o i caratteri che precedono o seguono.

Il confronto viene eseguito utilizzando le regole di ordinamento di word. Per ulteriori informazioni sulla parola, stringa e ordinale ordinamenti, vedere System.Globalization.CompareOptions.

Uno o entrambi i termini di confronto possono essere null. Per definizione, una stringa qualsiasi, compresa la stringa vuota (""), risulta maggiore di un riferimento null. e due riferimenti null risultano uguali tra loro.

Il confronto termina quando viene rilevata una disuguaglianza o entrambe le stringhe sono state confrontate. Se le due stringhe risultano uguali alla fine di una stringa e l'altra stringa contiene caratteri rimanenti, tuttavia, la stringa con caratteri rimanenti è considerata maggiore. Il valore restituito è il risultato dell'ultimo confronto eseguito.

Quando i confronti vengono applicati le regole specifiche delle impostazioni cultura di maiuscole e minuscole, possono verificarsi risultati imprevisti. In lingua turca, ad esempio, il nell'esempio seguente restituirà un risultato errato poiché il file system in turco non utilizza regole linguistiche maiuscole e minuscole per la lettera "i" in "file".

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, true) == 0);
}

Confrontare il nome del percorso "file" mediante un confronto ordinale. Il codice corretto per eseguire questa operazione è il seguente:

static bool IsFileURI(String path)
{
    return (String.Compare(path, 0, "file:", 0, 5, StringComparison.OrdinalIgnoreCase) == 0);
}

Note per i chiamanti:

I set di caratteri includono caratteri ignorabili. Il Compare(String, String, Boolean, CultureInfo) metodo non prende in considerazione tali caratteri quando si esegue un confronto con distinzione delle impostazioni cultura. Ad esempio, se il codice seguente viene eseguito nel .NET Framework 4 o in un secondo momento, un confronto senza distinzione di "animale" con "Ani posta" (con un segno meno facoltativo o U + 00AD) utilizzando la lingua delle impostazioni cultura indica che le due stringhe sono equivalenti.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string s1 = "Ani\u00ADmal";
      string s2 = "animal";

      Console.WriteLine("Comparison of '{0}' and '{1}': {2}", 
                        s1, s2, String.Compare(s1, s2, true,
                        CultureInfo.InvariantCulture));
   }
}
// The example displays the following output:
//       Comparison of 'ani-mal' and 'animal': 0

Per riconoscere i caratteri ignorabili in un confronto tra stringhe, chiamare ilCompare metodo e fornire un valore di CompareOptions.Ordinal o CompareOptions.OrdinalIgnoreCase per il options parametro.

Nell'esempio seguente viene illustrato come impostazioni cultura possono influire su un confronto. In ceco - impostazioni cultura Repubblica ceca, "ch" è un singolo carattere che è maggiore di "d". Tuttavia, in inglese - impostazioni cultura di Stati Uniti, "ch" è costituito da due caratteri e "c" è minore di "d".

using System;
using System.Globalization;

class Sample {
    public static void Main() {
    String str1 = "change";
    String str2 = "dollar";
    String relation = null;

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("en-US")) );
    Console.WriteLine("For en-US: {0} {1} {2}", str1, relation, str2);

    relation = symbol( String.Compare(str1, str2, false, new CultureInfo("cs-CZ")) );
    Console.WriteLine("For cs-CZ: {0} {1} {2}", str1, relation, str2);
    }

    private static String symbol(int r) {
    String s = "=";
    if      (r < 0) s = "<";
    else if (r > 0) s = ">";
    return s;
    }
}
/*
This example produces the following results.
For en-US: change < dollar
For cs-CZ: change > dollar
*/

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: