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

Enumerazione CompareOptions

 

Data di pubblicazione: ottobre 2016

Definisce le opzioni di confronto di stringa da utilizzare con CompareInfo.

Questa enumerazione ha un attributo FlagsAttribute che consente una combinazione bit per bit dei relativi valori dei membri.

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

[SerializableAttribute]
[FlagsAttribute]
[ComVisibleAttribute(true)]
public enum CompareOptions

Nome membroDescrizione
IgnoreCase

Indica che il confronto tra stringhe deve ignorare maiuscole.

IgnoreKanaType

Indica che il confronto tra stringhe deve ignorare il tipo Kana. Tipo Kana fa riferimento ai caratteri giapponesi hiragana e katakana, che rappresentano i fonemi della lingua giapponese. Hiragana viene utilizzato per le parole ed espressioni giapponesi native mentre katakana viene utilizzato per le parole preso in prestito da altri linguaggi, ad esempio "computer" o "Internet". Un fonema può essere espresso in caratteri hiragana e katakana. Se questo valore è selezionato, il carattere hiragana per un suono viene considerato uguale al carattere katakana per lo stesso file audio.

IgnoreNonSpace

Indica che il confronto tra stringhe deve ignorare i caratteri di combinazione, ad esempio i segni diacritici. Il Unicode Standard definisce la combinazione di caratteri come caratteri combinati con caratteri di base per produrre un nuovo carattere. I caratteri di combinazione non occupino una posizione di spaziatura vengono visualizzati separatamente.

IgnoreSymbols

Indica che il confronto tra stringhe deve ignorare simboli, ad esempio spazi, punteggiatura, simboli di valuta, il segno di percentuale, simboli matematici, la e commerciale e così via.

IgnoreWidth

Indica che il confronto tra stringhe deve ignorare la larghezza del carattere. Ad esempio caratteri giapponesi katakana possono essere scritti come interi o ridotti. Se questo valore è selezionato, i caratteri katakana scritti a larghezza intera vengono considerati uguali per gli stessi caratteri scritti a metà larghezza.

None

Indica le impostazioni delle opzioni predefinite per i confronti di stringhe.

Ordinal

Indica che il confronto tra stringhe deve utilizzare i valori con codificata Unicode UTF-16 successivi della stringa (unità di codice in base al confronto di unità di codice), causando un confronto rapido ma che è indipendente dalle impostazioni cultura. Una stringa a partire da un'unità di codice XXXX16 precede una stringa a partire da aaaa16, se XXXX16 è minore di YYYY16. Questo valore non può essere combinato con altri CompareOptions valori e devono essere utilizzati da soli.

OrdinalIgnoreCase

Confronto tra stringhe deve Ignora maiuscole / minuscole, quindi eseguire un confronto ordinale. Questa tecnica è equivalente alla conversione della stringa in lettere maiuscole utilizzando le impostazioni cultura invarianti e quindi effettuare un confronto ordinale sul risultato.

StringSort

Indica che il confronto tra stringhe deve utilizzare l'algoritmo di ordinamento della stringa. In un ordinamento di stringhe, il trattino e l'apostrofo, così come altri simboli non alfanumerici, precedono i caratteri alfanumerici.

Queste opzioni indicano distinzione maiuscole/minuscole o se è necessario ignorare i tipi di caratteri.

.NET Framework utilizza tre diverse modalità di ordinamento: word di ordine, ordinamento per stringhe e ordinamento ordinale. L'ordinamento per parola esegue un confronto dipendente dalla lingua delle stringhe. Alcuni caratteri non alfanumerici potrebbero essere assegnati a tali pesi speciali. Ad esempio, il trattino ("-") potrebbe avere un peso molto piccolo assegnato in modo che "coop" e "co" vengono visualizzati uno accanto a altro in un elenco ordinato. Ordinamento di stringa è simile per l'ordinamento per parola, ad eccezione del fatto che esistono casi speciali. Pertanto, tutti i simboli non alfanumerici precedono tutti i caratteri alfanumerici. Ordinamento ordinale confronta le stringhe in base ai valori Unicode di ogni elemento della stringa.

Il StringSort valore può essere utilizzato solo con CompareInfo.Compare e CompareInfo.GetSortKey. ArgumentException viene generata se il StringSort valore viene utilizzato con CompareInfo.IsPrefix, CompareInfo.IsSuffix, CompareInfo.IndexOf, o CompareInfo.LastIndexOf.

System_CAPS_noteNota

Quando possibile, l'applicazione deve utilizzare i metodi di confronto tra stringhe che accettano un CompareOptions valore per specificare il tipo di confronto previsto. Come regola generale, confronti esposti all'utente vengono serviti meglio dall'utilizzo di opzioni linguistiche (utilizzando le impostazioni cultura correnti), mentre la sicurezza, i confronti devono specificare Ordinal o OrdinalIgnoreCase.

Nell'esempio di codice riportato di seguito viene illustrato come ordinamento con StringSort quello senza StringSort.

using System;
using System.Collections;
using System.Globalization;


public class SamplesCompareOptions  {

   private class MyStringComparer: IComparer {
      private CompareInfo myComp;   
      private CompareOptions myOptions = CompareOptions.None;

      // Constructs a comparer using the specified CompareOptions.
      public MyStringComparer( CompareInfo cmpi, CompareOptions options )  {
         myComp = cmpi;
         this.myOptions = options;
      }

      // Compares strings with the CompareOptions specified in the constructor.
      public int Compare(Object a, Object b) {
         if (a == b) return 0;
         if (a == null) return -1;
         if (b == null) return 1;

         String sa = a as String;
         String sb = b as String;
         if (sa != null && sb != null)
            return myComp.Compare(sa, sb, myOptions);
         throw new ArgumentException("a and b should be strings.");

      }
   }

   public static void Main()  {

      // Creates and initializes an array of strings to sort.
      String[] myArr = new String[9] { "cant", "bill's", "coop", "cannot", "billet", "can't", "con", "bills", "co-op" };
      Console.WriteLine( "\nInitially," );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

      // Creates and initializes a Comparer to use.
      //CultureInfo myCI = new CultureInfo( "en-US", false );
      MyStringComparer myComp = new MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.None);

      // Sorts the array without StringSort.
      Array.Sort( myArr, myComp );
      Console.WriteLine( "\nAfter sorting without CompareOptions.StringSort:" );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

      // Sorts the array with StringSort.
      myComp = new MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.StringSort);
      Array.Sort( myArr, myComp );
      Console.WriteLine( "\nAfter sorting with CompareOptions.StringSort:" );
      foreach ( String myStr in myArr )
         Console.WriteLine( myStr );

   }

}

/*
This code produces the following output.

Initially,
cant
bill's
coop
cannot
billet
can't
con
bills
co-op

After sorting without CompareOptions.StringSort:
billet
bills
bill's
cannot
cant
can't
con
coop
co-op

After sorting with CompareOptions.StringSort:
bill's
billet
bills
can't
cannot
cant
co-op
con
coop

*/

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: