SPRZEDAŻ: 1-800-867-1389
Ten artykuł był przetłumaczony komputerowo. Oryginalny tekst zobaczysz, umieszczając wskaźnik myszy nad zdaniami w artykule. Więcej informacji.
Tłumaczenie
Oryginał
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Metoda String.Compare — (String, Int32, String, Int32, Int32)

.NET Framework 4.5

Porównuje podciągów dwóch określonych String obiektów i zwraca liczbę całkowitą, która wskazuje ich położenia w porządku sortowania.

Przestrzeń nazw:  System
Zestaw:  mscorlib (w mscorlib.dll)

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

Parametry

strA
Typ: System.String
Pierwszy ciąg do użycia w porównaniu.
indexA
Typ: System.Int32
Położenie podciągu w ramach parametru strA.
strB
Typ: System.String
Drugi ciąg do użycia w porównaniu.
indexB
Typ: System.Int32
Położenie podciągu w ramach parametru strB.
length
Typ: System.Int32
Maksymalna liczba znaków w podciągach do porównania.

Wartość zwracana

Typ: System.Int32
32-bitowe całkowita wskazująca leksykalne relację między dwoma comparands.

Wartość

Warunek

Mniej niż zero

Podciąg w parametrze strA jest mniejszy niż podciąg w parametrze strB.

Zero

Podciągi są takie same lub parametr length wynosi zero.

Większe od zera

Podciąg w parametrze strA jest większy niż podciąg w parametrze strB.

WyjątekWarunek
ArgumentOutOfRangeException

Parametr indexA jest większy od strA.Length.

-lub-

Parametr indexB jest większy od strB.Length.

-lub-

Parametr indexA, indexB lub length ma wartość ujemną.

-lub-

Either indexA or indexB is null, and length is greater than zero.

Podciągi do porównania start strA w indexA i w strB w indexB. Obie indexA i indexB się od zera; oznacza to, że pierwszy znak w strA i strB jest w pozycji zero. Długość pierwszego podciągu jest równa długości parametru strA minus indexA plus jeden. Długość drugiego podciągu jest równa długości parametru strB minus indexB plus jeden.

Liczba znaków do porównania jest mniejsza od długości dwóch podciągów i parametru length. Parametry indexA, indexB i length muszą być nieujemne.

Porównanie używa bieżącej kultury, aby uzyskać informacje specyficzne dla kultury, takie jak reguły obudowy porządkiem alfabetycznym poszczególnych znaków. Kultura może na przykład określać, że niektóre kombinacje znaków mogą być traktowane jako pojedynczy znak albo że wielkie i małe litery mają być porównywane w określony sposób, albo że porządek sortowania znaków zależy od znaków poprzedzających lub następnych.

Porównanie jest wykonywane przy użyciu reguł sortowania wyrazów. Aby uzyskać więcej informacji dotyczących wyrazów, ciągów i porządków sortowania, zobacz System.Globalization.CompareOptions.

Informacje dotyczące przestrogiPrzestroga

Podczas porównywania ciągów, powinna wywołać Compare(String, Int32, String, Int32, Int32, StringComparison) metodę, która wymaga jawnie określić typ porównania ciągów, która używa metody. Aby uzyskać więcej informacji, zobacz Najlepsze praktyki używania ciągów w programie .NET Framework.

Jeden lub oba atrybuty porównania mogą mieć wartość null. Według definicji dowolny ciąg, w tym ciąg pusty (""), porównuje odwołania o wartości większej niż zerowa; wskazuje też, że dwa odwołania zerowe są sobie równe.

Porównanie kończy się po wykryciu nierówności lub gdy zostały porównane oba podciągi. Jeśli jednak dwa porównywane ciągi są równe do końca jednego z nich, a drugi ciąg ma jeszcze pozostałe znaki, wówczas ciąg z pozostałymi znakami uznaje się za większy. Zwracana wartość jest wynikiem ostatniego wykonanego porównania.

Gdy na porównania wpływają reguły uwzględniające ustawienia kulturowe, mogą wystąpić nieoczekiwane rezultaty. Na przykład w języku tureckim poniższy przykład daje błędne wyniki, ponieważ system plików w tym języku nie używa reguł wielkich liter dla litery „i” w wyrazie „plik”.


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


Porównaj nazwę ścieżki, aby „uporządkować” według porównania porządkowego. Poprawny kod będzie następujący:


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


Uwagi dotyczące wywoływania

Zestawy znaków obejmują znaki do pominięcia. Compare(String, Int32, String, Int32, Int32) Metoda nie należy wziąć pod uwagę te znaki podczas wykonywania porównania pod względem językowym lub hodowli wrażliwych. Do rozpoznawania znaków do pominięcia w porównania, call Compare(String, Int32, String, Int32, Int32, StringComparison) metody i podać wartość CompareOptions.Ordinal lub CompareOptions.OrdinalIgnoreCase dla comparisonType parametru.

Poniższy przykład porównuje dwa podciągów.


// 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'.
*/


.NET Framework

Obsługiwane w: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Obsługiwane w: 4, 3.5 z dodatkiem SP1

Portable Class Library

Obsługiwane w: Portable Class Library

.NET dla aplikacji do sklepu Windows Store

Obsługiwane w: Windows 8

.NET dla aplikacji dla Windows Phone

Obsługiwane w: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 z dodatkiem R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista z dodatkiem SP2, Windows Server 2008 (instalacja roli Server Core jest nieobsługiwana), Windows Server 2008 R2 (instalacja roli Server Core jest obsługiwana, gdy jest zainstalowany dodatek SP1 lub nowszy; procesory Itanium nie są obsługiwane)

Program .NET Framework nie obsługuje wszystkich wersji każdej platformy. Aby uzyskać listę wszystkich obsługiwanych wersji, zobacz Wymagania systemowe programu .NET Framework.
Czy oceniasz te materiały jako pomocne?
(Pozostało znaków: 1500)
Dziękujemy za opinię.

Zawartość społeczności

Pokaż:
© 2015 Microsoft