Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Metodo String.Compare (String, String, StringComparison)

Confronta due oggetti String specificati utilizzando le regole specificate 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,
	StringComparison comparisonType
)

Parametri

strA
Tipo: System.String
Prima stringa da confrontare.
strB
Tipo: System.String
Seconda stringa da confrontare.
comparisonType
Tipo: System.StringComparison
Uno dei valori di enumerazione che specifica le regole da utilizzare per il confronto.

Valore restituito

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

Valore

Condizione

Minore di zero

Il parametro strA è minore del parametro strB.

Zero

strA è uguale a strB.

Maggiore di zero

strA è maggiore di strB.

EccezioneCondizione
ArgumentException

Il parametro comparisonType non è un valore StringComparison.

NotSupportedException

StringComparison non è supportato.

Il parametro comparisonType consente di specificare se il confronto deve utilizzare le impostazioni cultura correnti o invarianti, rispettare o ignorare la distinzione fra maiuscole e minuscole dei termini di confronto o utilizzare le regole di ordinamento per parola (specifiche delle impostazioni cultura) oppure ordinali (indipendenti dalle impostazioni cultura).

Uno o entrambi i termini di confronto possono essere null. Per definizione, qualsiasi stringa, compresa la stringa vuota (""), 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 due stringhe risultano uguali alla fine di una delle due, ma nell'altra restano ancora caratteri, quest'ultima verrà considerata maggiore. Il valore restituito è il risultato dell'ultimo confronto eseguito.

Le regole specifiche delle impostazioni cultura sull'utilizzo di maiuscole e minuscole possono influire sui confronti provocando risultati imprevisti. Nella lingua turca, ad esempio, l'esempio riportato di seguito restituirà un risultato errato dal momento che nel file system in questa lingua non sono applicate regole linguistiche sulla distinzione tra maiuscole e minuscole per la lettera "i" nella parola "file".


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


Confrontare il nome del percorso con "file" utilizzando un confronto ordinale. Di seguito viene riportato un esempio di codice corretto per eseguire tale operazione.


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 metodo Compare(String, String, StringComparison) non considera tali caratteri quando viene eseguito un confronto dipendente dalle impostazioni cultura. Per riconoscere i caratteri ignorable del confronto, fornire un valore StringComparison.Ordinal o OrdinalIgnoreCase per il parametro comparisonType.

Nell'esempio riportato di seguito vengono confrontate tre versioni della lettera "I". I risultati variano a seconda delle impostazioni cultura scelte, dell'applicazione o meno della distinzione fra maiuscole e minuscole e dell'eventuale esecuzione di un confronto ordinale.


// This example demonstrates the 
// System.String.Compare(String, String, StringComparison) method.

using System;
using System.Threading;

class Sample 
{
    public static void Main() 
    {
    string intro = "Compare three versions of the letter I using different " + 
                   "values of StringComparison.";

// Define an array of strings where each element contains a version of the 
// letter I. (An array of strings is used so you can easily modify this 
// code example to test additional or different combinations of strings.)  

    string[] threeIs = new string[3];
// LATIN SMALL LETTER I (U+0069)
    threeIs[0] = "\u0069";
// LATIN SMALL LETTER DOTLESS I (U+0131)
    threeIs[1] = "\u0131";
// LATIN CAPITAL LETTER I (U+0049)
    threeIs[2] = "\u0049";

    string[] unicodeNames = 
             {
             "LATIN SMALL LETTER I (U+0069)", 
             "LATIN SMALL LETTER DOTLESS I (U+0131)", 
             "LATIN CAPITAL LETTER I (U+0049)"
             };

    StringComparison[] scValues = {
        StringComparison.CurrentCulture,
        StringComparison.CurrentCultureIgnoreCase,
        StringComparison.InvariantCulture,
        StringComparison.InvariantCultureIgnoreCase,
        StringComparison.Ordinal,
        StringComparison.OrdinalIgnoreCase };

//
    Console.Clear();
    Console.WriteLine(intro);

// Display the current culture because the culture-specific comparisons
// can produce different results with different cultures.
    Console.WriteLine("The current culture is {0}.\n", 
                       Thread.CurrentThread.CurrentCulture.Name);

// Determine the relative sort order of three versions of the letter I. 
    foreach (StringComparison sc in scValues)
        {
        Console.WriteLine("StringComparison.{0}:", sc);

// LATIN SMALL LETTER I (U+0069) : LATIN SMALL LETTER DOTLESS I (U+0131)
        Test(0, 1, sc, threeIs, unicodeNames);

// LATIN SMALL LETTER I (U+0069) : LATIN CAPITAL LETTER I (U+0049)
        Test(0, 2, sc, threeIs, unicodeNames);

// LATIN SMALL LETTER DOTLESS I (U+0131) : LATIN CAPITAL LETTER I (U+0049)
        Test(1, 2, sc, threeIs, unicodeNames);

        Console.WriteLine();
        }
    }

    protected static void Test(int x, int y, 
                               StringComparison comparison, 
                               string[] testI, string[] testNames)
    {
    string resultFmt = "{0} is {1} {2}";
    string result = "equal to";
    int cmpValue = 0;
//
    cmpValue = String.Compare(testI[x], testI[y], comparison);
    if      (cmpValue < 0) 
        result = "less than";
    else if (cmpValue > 0)
        result = "greater than";
    Console.WriteLine(resultFmt, testNames[x], result, testNames[y]);
    }
}

/*
This code example produces the following results:

Compare three versions of the letter I using different values of StringComparison.
The current culture is en-US.

StringComparison.CurrentCulture:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.CurrentCultureIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.InvariantCulture:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is less than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.InvariantCultureIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.Ordinal:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is greater than LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

StringComparison.OrdinalIgnoreCase:
LATIN SMALL LETTER I (U+0069) is less than LATIN SMALL LETTER DOTLESS I (U+0131)
LATIN SMALL LETTER I (U+0069) is equal to LATIN CAPITAL LETTER I (U+0049)
LATIN SMALL LETTER DOTLESS I (U+0131) is greater than LATIN CAPITAL LETTER I (U+0049)

*/


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Libreria di classi portabile

Supportato in: Libreria di classi portabile

.NET per applicazioni Windows Store

Supportato in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.