Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

String.Compare-Methode: (String, Int32, String, Int32, Int32, StringComparison)

 

Veröffentlicht: Oktober 2016

Vergleicht Teilzeichenfolgen von zwei angegebenen String-Objekten gemäß den angegebenen Vergleichsregeln und gibt eine Ganzzahl zurück, welche die relative Position in der Sortierreihenfolge angibt.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static int Compare(
	string strA,
	int indexA,
	string strB,
	int indexB,
	int length,
	StringComparison comparisonType
)

Parameter

strA
Type: System.String

Die erste im Vergleich zu verwendende Zeichenfolge.

indexA
Type: System.Int32

Die Position der Teilzeichenfolge innerhalb von strA.

strB
Type: System.String

Die zweite im Vergleich zu verwendende Zeichenfolge.

indexB
Type: System.Int32

Die Position der Teilzeichenfolge innerhalb von strB.

length
Type: System.Int32

Die maximale Anzahl der zu vergleichenden Zeichen der Teilzeichenfolgen.

comparisonType
Type: System.StringComparison

Einer der Enumerationswerte, der die für den Vergleich zu verwendenden Regeln angibt.

Rückgabewert

Type: System.Int32

Eine 32-Bit-Ganzzahl mit Vorzeichen, die die lexikalische Beziehung der beiden verglichenen Elemente angibt.

Wert

Bedingung

Kleiner als 0 (Null)

Die Teilzeichenfolge in strA ist der Teilzeichenfolge in strB in der Sortierreihenfolge vorangestellt.

0 (Null)

Die Teilzeichenfolgen in der gleichen Position in der Sortierreihenfolge auftreten oder der length -Parameter ist 0 (null).

Größer als 0 (Null)

Die Teilzeichenfolge in strA Follllows die Teilzeichenfolge in strB in der Sortierreihenfolge.

Exception Condition
ArgumentOutOfRangeException

indexA ist größer als strALength.

- oder -

indexB ist größer als strBLength.

- oder -

indexA, indexB oder length ist ein negativer Wert.

- oder -

Entweder indexA oder indexB ist null, und length ist größer als 0 (null).

ArgumentException

comparisonType ist kein StringComparison-Wert.

Starten Sie die zu vergleichenden Teilzeichenfolgen in strA am indexA und strB am indexB. Beide indexA und indexB sind nullbasiert, d. h. das erste Zeichen in strA und strB an position 0 (null) ist, nicht an der position einer. Die Länge der ersten Teilzeichenfolge ist gleich der Länge des strA minus indexA plus eins. Die Länge der zweiten Teilzeichenfolge ist gleich der Länge des strB minus indexB plus eins.

Die Anzahl der zu vergleichenden Zeichen ist das kleinere der Längen der beiden Teilzeichenfolgen und length. Die indexA, indexB, und length Parameter dürfen nicht negativ sein.

Die comparisonType Parameter gibt an, ob der Vergleich die aktuelle oder der invariante Kultur verwenden soll, berücksichtigen oder ignorieren die Groß-/Kleinschreibung der verglichenen Elemente angibt, oder mit Wörtern (kulturabhängig) oder (kulturunabhängige) Ordinalsortierung.

Kann einem oder beiden verglichenen Elemente null. Definitionsgemäß eine beliebige Zeichenfolge, einschließlich die leere Zeichenfolge (""), verglichen, die größer als ein null-Verweis; und zwei null-Verweise gleich miteinander vergleichen.

Der Vergleich beendet, wenn Ungleichheit ermittelt wird, oder beide Teilzeichenfolgen verglichen wurden. Allerdings wird, wenn die beiden Zeichenfolgen gleich dem Ende einer Zeichenfolge vergleichen und die andere Zeichenfolge über verbleibende Zeichen, die Zeichenfolge mit den verbleibenden Zeichen größer angesehen. Der Rückgabewert ist das Ergebnis der letzten Vergleich durchgeführt.

Beim Vergleichen von kulturspezifischen Groß-/Kleinschreibung-Regeln betroffen sind, können unerwartete Ergebnisse auftreten. Ergibt z. B. im türkischen im folgenden Beispiel wird die falsche Ergebnisse, da das Dateisystem in der Sortierung der türkischen Sprache nicht linguistische Schreibweise Regeln für den Buchstaben "i" verwendet in "File".

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

Vergleichen Sie den Pfadnamen in "File", verwenden einen Ordinalvergleich durch. Zu diesem Zweck der richtige Code lautet wie folgt:

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

Hinweise für Aufrufer:

Zeichensätze enthalten ignorierbare Zeichen. Die Compare(String, Int32, String, Int32, Int32, StringComparison) Methode wird diese Zeichen beim Ausführen eines linguistischen oder kulturabhängigen Vergleichs nicht berücksichtigt. Um Ignorierbare Zeichen, die den Vergleich zu kennen, geben Sie den Wert StringComparison.Ordinal oder StringComparison.OrdinalIgnoreCase für die comparisonType Parameter.

Im folgende Beispiel werden zwei Teilzeichenfolgen verglichen.

// Sample for String.Compare(String, Int32, String, Int32, Int32)
using System;

class Sample {
    public static void Main() {
//                 0123456
    String str1 = "machine";
    String str2 = "device";
    String str;
    int result;

    Console.WriteLine();
    Console.WriteLine("str1 = '{0}', str2 = '{1}'", str1, str2);
    result = String.Compare(str1, 2, str2, 0, 2);
    str = ((result < 0) ? "less than" : ((result > 0) ? "greater than" : "equal to"));
    Console.Write("Substring '{0}' in '{1}' is ", str1.Substring(2, 2), str1);
    Console.Write("{0} ", str);
    Console.WriteLine("substring '{0}' in '{1}'.", str2.Substring(0, 2), str2);
    }
}
/*
This example produces the following results:

str1 = 'machine', str2 = 'device'
Substring 'ch' in 'machine' is less than substring 'de' in 'device'.
*/

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: