CompareOptions-Enumeration
Definiert die mit CompareInfo zu verwendenden Optionen für den Zeichenfolgenvergleich.
Diese Enumeration verfügt über ein FlagsAttribute -Attribut, das die bitweise Kombination der Memberwerte zulässt.
Namespace: System.Globalization
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<FlagsAttribute> _
Public Enumeration CompareOptions
'Usage
Dim instance As CompareOptions
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum CompareOptions
[SerializableAttribute]
[ComVisibleAttribute(true)]
[FlagsAttribute]
public enum class CompareOptions
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
/** @attribute FlagsAttribute() */
public enum CompareOptions
SerializableAttribute
ComVisibleAttribute(true)
FlagsAttribute
public enum CompareOptions
Member
Membername | Beschreibung | |
---|---|---|
IgnoreCase | Gibt an, dass beim Zeichenfolgenvergleich die Groß- und Kleinschreibung nicht beachtet wird. | |
IgnoreKanaType | Gibt an, dass beim Zeichenfolgenvergleich Zeichen vom Typ Kana ignoriert werden. Der Kana-Zeichentyp bezieht sich auf die japanischen Hiragana- und Katakana-Schriftzeichen, die im Japanischen phonetische Laute darstellen. Hiragana wird für japanische Ausdrücke und Wörter verwendet, während Katakana für Lehnwörter aus anderen Sprachen, z. B. "Computer" oder "Internet", verwendet wird. Ein phonetischer Laut kann sowohl in Hiragana als auch in Katakana dargestellt werden. Wenn dieser Wert ausgewählt ist, wird das Hiragana-Zeichen für einen Laut als gleichwertig mit dem Katakana-Zeichen für denselben Laut betrachtet. | |
IgnoreNonSpace | Gibt an, dass bei Zeichenfolgenvergleichen Kombinationszeichen ohne horizontalen Vorschub, z. B. diakritische Zeichen, ignoriert werden. Der Unicode-Standard definiert Kombinationszeichen als solche, die mit Basiszeichen kombiniert werden, um ein neues Zeichen zu bilden. Kombinationszeichen ohne horizontalen Vorschub nehmen bei der Darstellung keinen über die Breite des Basiszeichens hinausgehenden Platz ein. Weitere Informationen über Kombinationszeichen ohne horizontalen Vorschub finden Sie im Unicode-Standard unter http://www.unicode.org. | |
IgnoreSymbols | Gibt an, dass beim Zeichenfolgenvergleich Symbole, wie Leerzeichen, Satzzeichen, Währungssymbole, das Prozentzeichen, mathematische Symbole, das kaufmännische Und-Zeichen (&) usw., ignoriert werden. | |
IgnoreWidth | Gibt an, dass beim Zeichenfolgenvergleich die Zeichenbreite ignoriert wird. Japanische Katakana-Zeichen können z. B. in voller oder halber Breite geschrieben werden. Wenn dieser Wert ausgewählt ist, werden die in voller Breite geschriebenen Katakana-Zeichen als denselben in halber Breite geschriebenen Zeichen gleichwertig betrachtet. | |
None | Gibt die Standardeinstellungen der Optionen für Zeichenfolgenvergleiche an. | |
Ordinal | Gibt an, dass der Zeichenfolgenvergleich mithilfe der Unicode-Werte der einzelnen Zeichen durchgeführt werden muss. Dies ermöglicht ein schnelles, aber kulturunabhängiges Vergleichen. Eine Zeichenfolge mit "U+xxxx" wird vor einer Zeichenfolge angeordnet, die mit "U+yyyy" beginnt, wenn xxxx kleiner als yyyy ist. Dieses Flag muss allein verwendet werden, da es nicht mit anderen Flags kombiniert werden kann. | |
OrdinalIgnoreCase | Gibt an, dass die Groß-/Kleinschreibung beim Zeichenfolgenvergleich nicht berücksichtigt wird und ein ordinaler Vergleich erfolgt. Das bedeutet, dass die Zeichenfolge anhand der invarianten Kultur in eine Zeichenfolge in Großbuchstaben konvertiert wird und für die Ergebnisse anschließend ein ordinaler Vergleich ausgeführt wird. | |
StringSort | Gibt an, dass beim Zeichenfolgenvergleich der Zeichenfolgensortieralgorithmus verwendet werden muss, wobei Bindestriche und Apostrophe sowie andere nicht alphanumerische Symbole vor alphanumerischen Zeichen aufgeführt werden. |
Hinweise
Diese Optionen geben an, ob die Groß- und Kleinschreibung berücksichtigt werden muss oder ob Zeichentypen ignoriert werden sollen.
In .NET Framework kommen drei verschiedene Arten der Sortierung zur Anwendung: Wortsortierung, Zeichenfolgensortierung und Sortierung nach Ordnungszahl. Bei der Wortsortierung wird ein kulturabhängiger Zeichenfolgenvergleich durchgeführt. Bestimmten nicht alphanumerischen Zeichen werden unter Umständen spezielle Gewichtungen zugewiesen. Der Bindestrich ("-") erhält beispielsweise eine geringe Gewichtung, sodass "coop" und "co-op" in einer sortierten Liste nebeneinander angezeigt werden. Die Zeichenfolgensortierung unterscheidet sich von der Wortsortierung darin, dass keine Sonderfälle zugelassen und somit alle nicht alphanumerischen Symbole vor den alphanumerischen Zeichen angezeigt werden. Bei der Ordinalsortierung werden Zeichenfolgen auf der Grundlage der Unicode-Werte aller Elemente der Zeichenfolge verglichen.
Der StringSort-Wert kann nur mit CompareInfo.Compare und CompareInfo.GetSortKey verwendet werden. ArgumentException wird ausgelöst, wenn der StringSort-Wert mit CompareInfo.IsPrefix, CompareInfo.IsSuffix, CompareInfo.IndexOf oder CompareInfo.LastIndexOf verwendet wird.
Beispiel
Im folgenden Codebeispiel wird der Unterschied zwischen der Sortierung mit StringSort und der Sortierung ohne StringSort veranschaulicht.
Imports System
Imports System.Collections
Imports System.Globalization
Public Class SamplesCompareOptions
Private Class MyStringComparer
Implements IComparer
Private myComp As CompareInfo
Private myOptions As CompareOptions = CompareOptions.None
' Constructs a comparer using the specified CompareOptions.
Public Sub New(cmpi As CompareInfo, options As CompareOptions)
myComp = cmpi
Me.myOptions = options
End Sub 'New
' Compares strings with the CompareOptions specified in the constructor.
Public Function Compare(a As [Object], b As [Object]) As Integer Implements IComparer.Compare
If a = b Then
Return 0
End If
If a Is Nothing Then
Return - 1
End If
If b Is Nothing Then
Return 1
End If
Dim sa As [String] = a
Dim sb As [String] = b
If Not (sa Is Nothing) And Not (sb Is Nothing) Then
Return myComp.Compare(sa, sb, myOptions)
End If
Throw New ArgumentException("a and b should be strings.")
End Function 'Compare
End Class 'MyStringComparer
Public Shared Sub Main()
' Creates and initializes an array of strings to sort.
Dim myArr() As [String] = {"cant", "bill's", "coop", "cannot", "billet", "can't", "con", "bills", "co-op"}
Console.WriteLine()
Console.WriteLine("Initially,")
Dim myStr As [String]
For Each myStr In myArr
Console.WriteLine(myStr)
Next myStr
' Creates and initializes a Comparer to use.
'CultureInfo myCI = new CultureInfo( "en-US", false );
Dim myComp As New MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.None)
' Sorts the array without StringSort.
Array.Sort(myArr, myComp)
Console.WriteLine()
Console.WriteLine("After sorting without CompareOptions.StringSort:")
For Each myStr In myArr
Console.WriteLine(myStr)
Next myStr
' Sorts the array with StringSort.
myComp = New MyStringComparer(CompareInfo.GetCompareInfo("en-US"), CompareOptions.StringSort)
Array.Sort(myArr, myComp)
Console.WriteLine()
Console.WriteLine("After sorting with CompareOptions.StringSort:")
For Each myStr In myArr
Console.WriteLine(myStr)
Next myStr
End Sub 'Main
End Class 'SamplesCompareOptions
'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
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
*/
using namespace System;
using namespace System::Collections;
using namespace System::Globalization;
// __gc public class SamplesCompareOptions {
ref class MyStringComparer: public IComparer
{
public:
// Constructs a comparer using the specified CompareOptions.
CompareInfo^ myComp;
CompareOptions myOptions;
MyStringComparer( CompareInfo^ cmpi, CompareOptions options )
: myComp( cmpi ), myOptions( options )
{}
// Compares strings with the CompareOptions specified in the constructor.
virtual int Compare( Object^ a, Object^ b )
{
if ( a == b )
return 0;
if ( a == nullptr )
return -1;
if ( b == nullptr )
return 1;
String^ sa = dynamic_cast<String^>(a);
String^ sb = dynamic_cast<String^>(b);
if ( sa != nullptr && sb != nullptr )
return myComp->Compare( sa, sb, myOptions );
throw gcnew ArgumentException( "a and b should be strings." );
}
};
int main()
{
// Creates and initializes an array of strings to sort.
array<String^>^myArr = {"cant","bill's","coop","cannot","billet","can't","con","bills","co-op"};
Console::WriteLine( "\nInitially, " );
IEnumerator^ myEnum = myArr->GetEnumerator();
while ( myEnum->MoveNext() )
{
String^ myStr = safe_cast<String^>(myEnum->Current);
Console::WriteLine( myStr );
}
// Creates and initializes a Comparer to use.
//CultureInfo* myCI = new CultureInfo(S"en-US", false);
MyStringComparer^ myComp = gcnew MyStringComparer( CompareInfo::GetCompareInfo( "en-US" ),CompareOptions::None );
// Sorts the array without StringSort.
Array::Sort( myArr, myComp );
Console::WriteLine( "\nAfter sorting without CompareOptions::StringSort:" );
myEnum = myArr->GetEnumerator();
while ( myEnum->MoveNext() )
{
String^ myStr = safe_cast<String^>(myEnum->Current);
Console::WriteLine( myStr );
}
// Sorts the array with StringSort.
myComp = gcnew MyStringComparer( CompareInfo::GetCompareInfo( "en-US" ),CompareOptions::StringSort );
Array::Sort( myArr, myComp );
Console::WriteLine( "\nAfter sorting with CompareOptions::StringSort:" );
myEnum = myArr->GetEnumerator();
while ( myEnum->MoveNext() )
{
String^ myStr = safe_cast<String^>(myEnum->Current);
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
*/
import System.* ;
import System.Collections.* ;
import System.Globalization.* ;
public class SamplesCompareOptions
{
private class MyStringComparer implements 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;
} //MyStringComparer
// 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 =(String) a;
String sb = (String)b;
if (sa != null && sb != null) {
return myComp.Compare(sa, sb, myOptions);
}
throw new ArgumentException("a and b should be strings.");
} //Compare
} //MyStringComparer
public static void main(String[] args)
{
// Creates and initializes an array of strings to sort.
String myArr[] = new String[]{"cant", "bill's", "coop", "cannot",
"billet", "can't", "con", "bills", "co-op"};
Console.WriteLine("\nInitially,");
SamplesCompareOptions mySamplesCompareOptions =
new SamplesCompareOptions();
for(int i=0 ; i < myArr.length ;i++) {
String myStr = myArr[i];
Console.WriteLine(myStr);
}
// Creates and initializes a Comparer to use.
//CultureInfo myCI = new CultureInfo( "en-US", false );
MyStringComparer myComp = mySamplesCompareOptions.new MyStringComparer(
CompareInfo.GetCompareInfo("en-US"), CompareOptions.None);
// Sorts the array without StringSort.
Array.Sort(myArr, myComp);
Console.WriteLine("\nAfter sorting without CompareOptions.StringSort:");
for(int i=0; i< myArr.length ;i++) {
String myStr = myArr[i];
Console.WriteLine(myStr);
}
// Sorts the array with StringSort.
myComp = mySamplesCompareOptions.new MyStringComparer(
CompareInfo.GetCompareInfo("en-US"), CompareOptions.StringSort);
Array.Sort(myArr, myComp);
Console.WriteLine("\nAfter sorting with CompareOptions.StringSort:");
for(int i=0; i< myArr.length ;i++) {
String myStr = myArr[i];
Console.WriteLine(myStr);
}
} //main
} //SamplesCompareOptions
/*
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
*/
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
System.Globalization-Namespace