CompareInfo.Compare Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Porównuje dwa ciągi.
Przeciążenia
Compare(String, String) |
Porównuje dwa ciągi. |
Compare(ReadOnlySpan<Char>, ReadOnlySpan<Char>, CompareOptions) |
Porównuje dwa zakresy znaków tylko do odczytu. |
Compare(String, String, CompareOptions) |
Porównuje dwa ciągi przy użyciu określonej CompareOptions wartości. |
Compare(String, Int32, String, Int32) |
Porównuje sekcję końcową ciągu z sekcją końcową innego ciągu. |
Compare(String, Int32, String, Int32, CompareOptions) |
Porównuje sekcję końcową ciągu z sekcją końcową innego ciągu przy użyciu określonej CompareOptions wartości. |
Compare(String, Int32, Int32, String, Int32, Int32) |
Porównuje sekcję jednego ciągu z sekcją innego ciągu. |
Compare(String, Int32, Int32, String, Int32, Int32, CompareOptions) |
Porównuje sekcję jednego ciągu z sekcją innego ciągu przy użyciu określonej CompareOptions wartości. |
Compare(String, String)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje dwa ciągi.
public:
virtual int Compare(System::String ^ string1, System::String ^ string2);
public:
int Compare(System::String ^ string1, System::String ^ string2);
public virtual int Compare (string string1, string string2);
public int Compare (string? string1, string? string2);
public virtual int Compare (string? string1, string? string2);
abstract member Compare : string * string -> int
override this.Compare : string * string -> int
member this.Compare : string * string -> int
Public Overridable Function Compare (string1 As String, string2 As String) As Integer
Public Function Compare (string1 As String, string2 As String) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- string2
- String
Drugi ciąg do porównania.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Te dwa ciągi są równe. |
mniejsze niż zero | string1 wartość jest mniejsza niż string2 .
|
większe niż zero | string1 wartość jest większa niż string2 .
|
Przykłady
Poniższy przykład porównuje fragmenty dwóch ciągów przy użyciu różnych CompareInfo obiektów:
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z rodzajem międzynarodowym
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z tradycyjnym sortowaniem
CompareInfo obiekt skojarzony z obiektem InvariantCulture
// The following code example compares two strings using the different CompareInfo instances:
// a CompareInfo instance associated with the S"Spanish - Spain" culture with international sort,
// a CompareInfo instance associated with the S"Spanish - Spain" culture with traditional sort, and
// a CompareInfo instance associated with the InvariantCulture.
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "calle";
String^ myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that
// uses the S"es-ES" culture with international sort.
CompareInfo^ myCompIntl = CompareInfo::GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that
// uses the S"es-ES" culture with traditional sort.
CompareInfo^ myCompTrad = CompareInfo::GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo^ myCompInva = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myCompIntl.
Console::WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1, myStr2 );
Console::WriteLine( " With myCompIntl::Compare: {0}", myCompIntl->Compare( myStr1, myStr2 ) );
Console::WriteLine( " With myCompTrad::Compare: {0}", myCompTrad->Compare( myStr1, myStr2 ) );
Console::WriteLine( " With myCompInva::Compare: {0}", myCompInva->Compare( myStr1, myStr2 ) );
}
/*
This code produces the following output.
Comparing "calle" and "calor"
With myCompIntl::Compare: -1
With myCompTrad::Compare: 1
With myCompInva::Compare: -1
*/
// The following code example compares two strings using the different CompareInfo instances:
// a CompareInfo instance associated with the "Spanish - Spain" culture with international sort,
// a CompareInfo instance associated with the "Spanish - Spain" culture with traditional sort, and
// a CompareInfo instance associated with the InvariantCulture.
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "calle";
String myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
CompareInfo myCompIntl = CompareInfo.GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
CompareInfo myCompTrad = CompareInfo.GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo myCompInva = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myCompIntl.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1, myStr2 );
Console.WriteLine( " With myCompIntl.Compare: {0}", myCompIntl.Compare( myStr1, myStr2 ) );
Console.WriteLine( " With myCompTrad.Compare: {0}", myCompTrad.Compare( myStr1, myStr2 ) );
Console.WriteLine( " With myCompInva.Compare: {0}", myCompInva.Compare( myStr1, myStr2 ) );
}
}
/*
This code produces the following output.
Comparing "calle" and "calor"
With myCompIntl.Compare: -1
With myCompTrad.Compare: 1
With myCompInva.Compare: -1
*/
' The following code example compares two strings using the different CompareInfo instances:
' a CompareInfo instance associated with the "Spanish - Spain" culture with international sort,
' a CompareInfo instance associated with the "Spanish - Spain" culture with traditional sort, and
' a CompareInfo instance associated with the InvariantCulture.
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "calle"
Dim myStr2 As [String] = "calor"
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
Dim myCompIntl As CompareInfo = CompareInfo.GetCompareInfo("es-ES")
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
Dim myCompTrad As CompareInfo = CompareInfo.GetCompareInfo(&H40A)
' Uses the CompareInfo property of the InvariantCulture.
Dim myCompInva As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myCompIntl.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1, myStr2)
Console.WriteLine(" With myCompIntl.Compare: {0}", myCompIntl.Compare(myStr1, myStr2))
Console.WriteLine(" With myCompTrad.Compare: {0}", myCompTrad.Compare(myStr1, myStr2))
Console.WriteLine(" With myCompInva.Compare: {0}", myCompInva.Compare(myStr1, myStr2))
End Sub
End Class
'This code produces the following output.
'
'Comparing "calle" and "calor"
' With myCompIntl.Compare: -1
' With myCompTrad.Compare: 1
' With myCompInva.Compare: -1
W poniższym przykładzie pokazano wywołanie Compare metody .
using namespace System;
using namespace System::Text;
using namespace System::Globalization;
int main()
{
array<String^>^ sign = gcnew array<String^> { "<", "=", ">" };
// The code below demonstrates how strings compare
// differently for different cultures.
String^ s1 = "Coté";
String^ s2 = "coté";
String^ s3 = "côte";
// Set sort order of strings for French in France.
CompareInfo^ ci = (gcnew CultureInfo("fr-FR"))->CompareInfo;
Console::WriteLine(L"The LCID for {0} is {1}.", ci->Name, ci->LCID);
// Display the result using fr-FR Compare of Coté = coté.
Console::WriteLine(L"fr-FR Compare: {0} {2} {1}",
s1, s2, sign[ci->Compare(s1, s2, CompareOptions::IgnoreCase) + 1]);
// Display the result using fr-FR Compare of coté > côte.
Console::WriteLine(L"fr-FR Compare: {0} {2} {1}",
s2, s3, sign[ci->Compare(s2, s3, CompareOptions::None) + 1]);
// Set sort order of strings for Japanese as spoken in Japan.
ci = (gcnew CultureInfo("ja-JP"))->CompareInfo;
Console::WriteLine(L"The LCID for {0} is {1}.", ci->Name, ci->LCID);
// Display the result using ja-JP Compare of coté < côte.
Console::WriteLine("ja-JP Compare: {0} {2} {1}",
s2, s3, sign[ci->Compare(s2, s3) + 1]);
}
// This code produces the following output.
//
// The LCID for fr-FR is 1036.
// fr-FR Compare: Coté = coté
// fr-FR Compare: coté > côte
// The LCID for ja-JP is 1041.
// ja-JP Compare: coté < côte
using System;
using System.Text;
using System.Globalization;
public sealed class App
{
static void Main(string[] args)
{
String[] sign = new String[] { "<", "=", ">" };
// The code below demonstrates how strings compare
// differently for different cultures.
String s1 = "Coté", s2 = "coté", s3 = "côte";
// Set sort order of strings for French in France.
CompareInfo ci = new CultureInfo("fr-FR").CompareInfo;
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID);
// Display the result using fr-FR Compare of Coté = coté.
Console.WriteLine("fr-FR Compare: {0} {2} {1}",
s1, s2, sign[ci.Compare(s1, s2, CompareOptions.IgnoreCase) + 1]);
// Display the result using fr-FR Compare of coté > côte.
Console.WriteLine("fr-FR Compare: {0} {2} {1}",
s2, s3, sign[ci.Compare(s2, s3, CompareOptions.None) + 1]);
// Set sort order of strings for Japanese as spoken in Japan.
ci = new CultureInfo("ja-JP").CompareInfo;
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID);
// Display the result using ja-JP Compare of coté < côte.
Console.WriteLine("ja-JP Compare: {0} {2} {1}",
s2, s3, sign[ci.Compare(s2, s3) + 1]);
}
}
// This code produces the following output.
//
// The LCID for fr-FR is 1036.
// fr-FR Compare: Coté = coté
// fr-FR Compare: coté > côte
// The LCID for ja-JP is 1041.
// ja-JP Compare: coté < côte
Imports System.Text
Imports System.Globalization
NotInheritable Public Class App
Shared Sub Main(ByVal args() As String)
Dim sign() As String = {"<", "=", ">"}
' The code below demonstrates how strings compare
' differently for different cultures.
Dim s1 As String = "Coté"
Dim s2 As String = "coté"
Dim s3 As String = "côte"
' Set sort order of strings for French in France.
Dim ci As CompareInfo = New CultureInfo("fr-FR").CompareInfo
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID)
' Display the result using fr-FR Compare of Coté = coté.
Console.WriteLine("fr-FR Compare: {0} {2} {1}", _
s1, s2, sign((ci.Compare(s1, s2, CompareOptions.IgnoreCase) + 1)))
' Display the result using fr-FR Compare of coté > côte.
Console.WriteLine("fr-FR Compare: {0} {2} {1}", _
s2, s3, sign((ci.Compare(s2, s3, CompareOptions.None) + 1)))
' Set sort order of strings for Japanese as spoken in Japan.
ci = New CultureInfo("ja-JP").CompareInfo
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID)
' Display the result using ja-JP Compare of coté < côte.
Console.WriteLine("ja-JP Compare: {0} {2} {1}", _
s2, s3, sign((ci.Compare(s2, s3) + 1)))
End Sub
End Class
' This code produces the following output.
'
' The LCID for fr-FR is 1036.
' fr-FR Compare: Coté = coté
' fr-FR Compare: coté > côte
' The LCID for ja-JP is 1041.
' ja-JP Compare: coté < côte
Uwagi
Domyślnie porównanie jest wykonywane przy użyciu polecenia CompareOptions.None. Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy wywołać metody porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. Metoda Compare(String, String) nie uwzględnia takich znaków podczas porównywania uwzględniającego kulturę. Na przykład porównanie "zwierzę" z "ani-mal" (przy użyciu łącznika miękkiego lub U+00AD) wskazuje, że dwa ciągi są równoważne, jak pokazano w poniższym przykładzie.
Imports System.Globalization
Module Example
Public Sub Main()
Dim ci As CompareInfo = CultureInfo.CurrentCulture.CompareInfo
Dim s1 As String = "ani" + ChrW(&h00AD) + "mal"
Dim s2 As String = "animal"
Console.WriteLine("Comparison of '{0}' and '{1}': {2}",
s1, s2, ci.Compare(s1, s2))
End Sub
End Module
' The example displays the following output:
' Comparison of 'ani-mal' and 'animal': 0
Aby rozpoznać znaki możliwe do zignorowania w porównaniu ciągów, wywołaj Compare(String, String, CompareOptions) metodę i podaj wartość Ordinal parametru options
lub OrdinalIgnoreCase .
Dotyczy
Compare(ReadOnlySpan<Char>, ReadOnlySpan<Char>, CompareOptions)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje dwa zakresy znaków tylko do odczytu.
public int Compare (ReadOnlySpan<char> string1, ReadOnlySpan<char> string2, System.Globalization.CompareOptions options = System.Globalization.CompareOptions.None);
member this.Compare : ReadOnlySpan<char> * ReadOnlySpan<char> * System.Globalization.CompareOptions -> int
Public Function Compare (string1 As ReadOnlySpan(Of Char), string2 As ReadOnlySpan(Of Char), Optional options As CompareOptions = System.Globalization.CompareOptions.None) As Integer
Parametry
- string1
- ReadOnlySpan<Char>
Pierwszy zakres znaków tylko do odczytu do porównania.
- string2
- ReadOnlySpan<Char>
Drugi zakres znaków tylko do odczytu do porównania.
- options
- CompareOptions
Opcjonalna kombinacja CompareOptions wartości wyliczenia do użycia podczas porównywania. Wartość domyślna to None.
Zwraca
Zero, jeśli string1
i string2
są równe; lub wartość ujemna, jeśli string1
sortuje przed string2
; lub wartość dodatnia, jeśli string1
sortuje po string2
.
Wyjątki
options
zawiera nieobsługiwaną kombinację flag.
Dotyczy
Compare(String, String, CompareOptions)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje dwa ciągi przy użyciu określonej CompareOptions wartości.
public:
virtual int Compare(System::String ^ string1, System::String ^ string2, System::Globalization::CompareOptions options);
public:
int Compare(System::String ^ string1, System::String ^ string2, System::Globalization::CompareOptions options);
public virtual int Compare (string string1, string string2, System.Globalization.CompareOptions options);
public int Compare (string? string1, string? string2, System.Globalization.CompareOptions options);
public virtual int Compare (string? string1, string? string2, System.Globalization.CompareOptions options);
abstract member Compare : string * string * System.Globalization.CompareOptions -> int
override this.Compare : string * string * System.Globalization.CompareOptions -> int
member this.Compare : string * string * System.Globalization.CompareOptions -> int
Public Overridable Function Compare (string1 As String, string2 As String, options As CompareOptions) As Integer
Public Function Compare (string1 As String, string2 As String, options As CompareOptions) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- string2
- String
Drugi ciąg do porównania.
- options
- CompareOptions
Wartość definiująca sposób string1
i string2
elementy, które powinny być porównywane. options
to wartość Ordinalwyliczenia lub bitowa kombinacja co najmniej jednej z następujących wartości: IgnoreCase, , IgnoreSymbolsIgnoreNonSpace, IgnoreWidth, IgnoreKanaTypei StringSort.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Te dwa ciągi są równe. |
mniejsze niż zero | string1 wartość jest mniejsza niż string2 .
|
większe niż zero | string1 wartość jest większa niż string2 .
|
Wyjątki
options
zawiera nieprawidłową CompareOptions wartość.
Przykłady
Poniższy przykład porównuje dwa ciągi przy użyciu różnych CompareOptions ustawień.
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "My Uncle Bill's clients";
String^ myStr2 = "My uncle bills clients";
// Creates a CompareInfo which uses the InvariantCulture.
CompareInfo^ myComp = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myComp.
Console::WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1, myStr2 );
Console::WriteLine( " With no CompareOptions : {0}", myComp->Compare( myStr1, myStr2 ) );
Console::WriteLine( " With None : {0}", myComp->Compare( myStr1, myStr2, CompareOptions::None ) );
Console::WriteLine( " With Ordinal : {0}", myComp->Compare( myStr1, myStr2, CompareOptions::Ordinal ) );
Console::WriteLine( " With StringSort : {0}", myComp->Compare( myStr1, myStr2, CompareOptions::StringSort ) );
Console::WriteLine( " With IgnoreCase : {0}", myComp->Compare( myStr1, myStr2, CompareOptions::IgnoreCase ) );
Console::WriteLine( " With IgnoreSymbols : {0}", myComp->Compare( myStr1, myStr2, CompareOptions::IgnoreSymbols ) );
Console::WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp->Compare( myStr1, myStr2, static_cast<CompareOptions>(CompareOptions::IgnoreCase | CompareOptions::IgnoreSymbols) ) );
}
/*
This code produces the following output.
Comparing "My Uncle Bill's clients" and "My uncle bills clients"
With no CompareOptions : 1
With None : 1
With Ordinal : -32
With StringSort : -1
With IgnoreCase : 1
With IgnoreSymbols : 1
With IgnoreCase and IgnoreSymbols : 0
*/
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "My Uncle Bill's clients";
String myStr2 = "My uncle bills clients";
// Creates a CompareInfo that uses the InvariantCulture.
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myComp.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1, myStr2 );
Console.WriteLine( " With no CompareOptions : {0}", myComp.Compare( myStr1, myStr2 ) );
Console.WriteLine( " With None : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.None ) );
Console.WriteLine( " With Ordinal : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.Ordinal ) );
Console.WriteLine( " With StringSort : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.StringSort ) );
Console.WriteLine( " With IgnoreCase : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.IgnoreCase ) );
Console.WriteLine( " With IgnoreSymbols : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.IgnoreSymbols ) );
Console.WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare( myStr1, myStr2, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols ) );
}
}
/*
This code produces the following output.
Comparing "My Uncle Bill's clients" and "My uncle bills clients"
With no CompareOptions : 1
With None : 1
With Ordinal : -32
With StringSort : -1
With IgnoreCase : 1
With IgnoreSymbols : 1
With IgnoreCase and IgnoreSymbols : 0
*/
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "My Uncle Bill's clients"
Dim myStr2 As [String] = "My uncle bills clients"
' Creates a CompareInfo that uses the InvariantCulture.
Dim myComp As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myComp.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1, myStr2)
Console.WriteLine(" With no CompareOptions : {0}", myComp.Compare(myStr1, myStr2))
Console.WriteLine(" With None : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.None))
Console.WriteLine(" With Ordinal : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.Ordinal))
Console.WriteLine(" With StringSort : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.StringSort))
Console.WriteLine(" With IgnoreCase : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.IgnoreCase))
Console.WriteLine(" With IgnoreSymbols : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.IgnoreSymbols))
Console.WriteLine(" With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare(myStr1, myStr2, CompareOptions.IgnoreCase Or CompareOptions.IgnoreSymbols))
End Sub
End Class
'This code produces the following output.
'
'Comparing "My Uncle Bill's clients" and "My uncle bills clients"
' With no CompareOptions : 1
' With None : 1
' With Ordinal : -32
' With StringSort : -1
' With IgnoreCase : 1
' With IgnoreSymbols : 1
' With IgnoreCase and IgnoreSymbols : 0
W poniższym przykładzie pokazano wywołanie Compare metody .
using namespace System;
using namespace System::Text;
using namespace System::Globalization;
int main()
{
array<String^>^ sign = gcnew array<String^> { "<", "=", ">" };
// The code below demonstrates how strings compare
// differently for different cultures.
String^ s1 = "Coté";
String^ s2 = "coté";
String^ s3 = "côte";
// Set sort order of strings for French in France.
CompareInfo^ ci = (gcnew CultureInfo("fr-FR"))->CompareInfo;
Console::WriteLine(L"The LCID for {0} is {1}.", ci->Name, ci->LCID);
// Display the result using fr-FR Compare of Coté = coté.
Console::WriteLine(L"fr-FR Compare: {0} {2} {1}",
s1, s2, sign[ci->Compare(s1, s2, CompareOptions::IgnoreCase) + 1]);
// Display the result using fr-FR Compare of coté > côte.
Console::WriteLine(L"fr-FR Compare: {0} {2} {1}",
s2, s3, sign[ci->Compare(s2, s3, CompareOptions::None) + 1]);
// Set sort order of strings for Japanese as spoken in Japan.
ci = (gcnew CultureInfo("ja-JP"))->CompareInfo;
Console::WriteLine(L"The LCID for {0} is {1}.", ci->Name, ci->LCID);
// Display the result using ja-JP Compare of coté < côte.
Console::WriteLine("ja-JP Compare: {0} {2} {1}",
s2, s3, sign[ci->Compare(s2, s3) + 1]);
}
// This code produces the following output.
//
// The LCID for fr-FR is 1036.
// fr-FR Compare: Coté = coté
// fr-FR Compare: coté > côte
// The LCID for ja-JP is 1041.
// ja-JP Compare: coté < côte
using System;
using System.Text;
using System.Globalization;
public sealed class App
{
static void Main(string[] args)
{
String[] sign = new String[] { "<", "=", ">" };
// The code below demonstrates how strings compare
// differently for different cultures.
String s1 = "Coté", s2 = "coté", s3 = "côte";
// Set sort order of strings for French in France.
CompareInfo ci = new CultureInfo("fr-FR").CompareInfo;
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID);
// Display the result using fr-FR Compare of Coté = coté.
Console.WriteLine("fr-FR Compare: {0} {2} {1}",
s1, s2, sign[ci.Compare(s1, s2, CompareOptions.IgnoreCase) + 1]);
// Display the result using fr-FR Compare of coté > côte.
Console.WriteLine("fr-FR Compare: {0} {2} {1}",
s2, s3, sign[ci.Compare(s2, s3, CompareOptions.None) + 1]);
// Set sort order of strings for Japanese as spoken in Japan.
ci = new CultureInfo("ja-JP").CompareInfo;
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID);
// Display the result using ja-JP Compare of coté < côte.
Console.WriteLine("ja-JP Compare: {0} {2} {1}",
s2, s3, sign[ci.Compare(s2, s3) + 1]);
}
}
// This code produces the following output.
//
// The LCID for fr-FR is 1036.
// fr-FR Compare: Coté = coté
// fr-FR Compare: coté > côte
// The LCID for ja-JP is 1041.
// ja-JP Compare: coté < côte
Imports System.Text
Imports System.Globalization
NotInheritable Public Class App
Shared Sub Main(ByVal args() As String)
Dim sign() As String = {"<", "=", ">"}
' The code below demonstrates how strings compare
' differently for different cultures.
Dim s1 As String = "Coté"
Dim s2 As String = "coté"
Dim s3 As String = "côte"
' Set sort order of strings for French in France.
Dim ci As CompareInfo = New CultureInfo("fr-FR").CompareInfo
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID)
' Display the result using fr-FR Compare of Coté = coté.
Console.WriteLine("fr-FR Compare: {0} {2} {1}", _
s1, s2, sign((ci.Compare(s1, s2, CompareOptions.IgnoreCase) + 1)))
' Display the result using fr-FR Compare of coté > côte.
Console.WriteLine("fr-FR Compare: {0} {2} {1}", _
s2, s3, sign((ci.Compare(s2, s3, CompareOptions.None) + 1)))
' Set sort order of strings for Japanese as spoken in Japan.
ci = New CultureInfo("ja-JP").CompareInfo
Console.WriteLine("The LCID for {0} is {1}.", ci.Name, ci.LCID)
' Display the result using ja-JP Compare of coté < côte.
Console.WriteLine("ja-JP Compare: {0} {2} {1}", _
s2, s3, sign((ci.Compare(s2, s3) + 1)))
End Sub
End Class
' This code produces the following output.
'
' The LCID for fr-FR is 1036.
' fr-FR Compare: Coté = coté
' fr-FR Compare: coté > côte
' The LCID for ja-JP is 1041.
' ja-JP Compare: coté < côte
Uwagi
Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy wywołać metody porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. Metoda Compare(String, String, CompareOptions) nie uwzględnia takich znaków podczas porównywania uwzględniającego kulturę. Aby rozpoznać znaki możliwe do zignorowania w porównaniu, podaj wartość Ordinal lub OrdinalIgnoreCase dla parametru options
.
Zobacz też
Dotyczy
Compare(String, Int32, String, Int32)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje sekcję końcową ciągu z sekcją końcową innego ciągu.
public:
virtual int Compare(System::String ^ string1, int offset1, System::String ^ string2, int offset2);
public:
int Compare(System::String ^ string1, int offset1, System::String ^ string2, int offset2);
public virtual int Compare (string string1, int offset1, string string2, int offset2);
public int Compare (string? string1, int offset1, string? string2, int offset2);
public virtual int Compare (string? string1, int offset1, string? string2, int offset2);
abstract member Compare : string * int * string * int -> int
override this.Compare : string * int * string * int -> int
member this.Compare : string * int * string * int -> int
Public Overridable Function Compare (string1 As String, offset1 As Integer, string2 As String, offset2 As Integer) As Integer
Public Function Compare (string1 As String, offset1 As Integer, string2 As String, offset2 As Integer) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- offset1
- Int32
Indeks zerowy znaku, w string1
którym należy rozpocząć porównywanie.
- string2
- String
Drugi ciąg do porównania.
- offset2
- Int32
Indeks zerowy znaku, w string2
którym należy rozpocząć porównywanie.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Te dwa ciągi są równe. |
mniejsze niż zero | Określona sekcja elementu string1 jest mniejsza niż określona sekcja .string2
|
większe niż zero | Określona sekcja elementu string1 jest większa niż określona sekcja .string2
|
Wyjątki
offset1
wartość lub offset2
jest mniejsza niż zero.
-lub-
offset1
jest większa lub równa liczbie znaków w elemecie string1
.
-lub-
offset2
jest większa lub równa liczbie znaków w elemecie string2
.
Przykłady
Poniższy przykład porównuje fragmenty dwóch ciągów przy użyciu różnych CompareInfo obiektów:
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z rodzajem międzynarodowym
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z tradycyjnym sortowaniem
CompareInfo obiekt skojarzony z obiektem InvariantCulture
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "calle";
String^ myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that
// uses the S"es-ES" culture with international sort.
CompareInfo^ myCompIntl = CompareInfo::GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that
// uses the S"es-ES" culture with traditional sort.
CompareInfo^ myCompTrad = CompareInfo::GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo^ myCompInva = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myCompIntl.
Console::WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1->Substring( 2 ), myStr2->Substring( 2 ) );
Console::WriteLine( " With myCompIntl::Compare: {0}", myCompIntl->Compare( myStr1, 2, myStr2, 2 ) );
Console::WriteLine( " With myCompTrad::Compare: {0}", myCompTrad->Compare( myStr1, 2, myStr2, 2 ) );
Console::WriteLine( " With myCompInva::Compare: {0}", myCompInva->Compare( myStr1, 2, myStr2, 2 ) );
}
/*
This code produces the following output.
Comparing "lle" and "lor"
With myCompIntl::Compare: -1
With myCompTrad::Compare: 1
With myCompInva::Compare: -1
*/
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "calle";
String myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
CompareInfo myCompIntl = CompareInfo.GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
CompareInfo myCompTrad = CompareInfo.GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo myCompInva = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myCompIntl.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 2 ), myStr2.Substring( 2 ) );
Console.WriteLine( " With myCompIntl.Compare: {0}", myCompIntl.Compare( myStr1, 2, myStr2, 2 ) );
Console.WriteLine( " With myCompTrad.Compare: {0}", myCompTrad.Compare( myStr1, 2, myStr2, 2 ) );
Console.WriteLine( " With myCompInva.Compare: {0}", myCompInva.Compare( myStr1, 2, myStr2, 2 ) );
}
}
/*
This code produces the following output.
Comparing "lle" and "lor"
With myCompIntl.Compare: -1
With myCompTrad.Compare: 1
With myCompInva.Compare: -1
*/
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "calle"
Dim myStr2 As [String] = "calor"
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
Dim myCompIntl As CompareInfo = CompareInfo.GetCompareInfo("es-ES")
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
Dim myCompTrad As CompareInfo = CompareInfo.GetCompareInfo(&H40A)
' Uses the CompareInfo property of the InvariantCulture.
Dim myCompInva As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myCompIntl.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1.Substring(2), myStr2.Substring(2))
Console.WriteLine(" With myCompIntl.Compare: {0}", myCompIntl.Compare(myStr1, 2, myStr2, 2))
Console.WriteLine(" With myCompTrad.Compare: {0}", myCompTrad.Compare(myStr1, 2, myStr2, 2))
Console.WriteLine(" With myCompInva.Compare: {0}", myCompInva.Compare(myStr1, 2, myStr2, 2))
End Sub
End Class
'This code produces the following output.
'
'Comparing "lle" and "lor"
' With myCompIntl.Compare: -1
' With myCompTrad.Compare: 1
' With myCompInva.Compare: -1
Uwagi
Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy wywołać metody porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków obejmują znaki do pominięcia. Metoda Compare(String, Int32, String, Int32) nie uwzględnia tych znaków podczas przeprowadzania porównania językowego lub wrażliwego na kulturę. Aby rozpoznać znaki możliwe do zignorowania w porównaniu, wywołaj metodę Compare(String, Int32, String, Int32, CompareOptions) i podaj wartość Ordinal lub OrdinalIgnoreCase dla parametru options
.
Dotyczy
Compare(String, Int32, String, Int32, CompareOptions)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje sekcję końcową ciągu z sekcją końcową innego ciągu przy użyciu określonej CompareOptions wartości.
public:
virtual int Compare(System::String ^ string1, int offset1, System::String ^ string2, int offset2, System::Globalization::CompareOptions options);
public:
int Compare(System::String ^ string1, int offset1, System::String ^ string2, int offset2, System::Globalization::CompareOptions options);
public virtual int Compare (string string1, int offset1, string string2, int offset2, System.Globalization.CompareOptions options);
public int Compare (string? string1, int offset1, string? string2, int offset2, System.Globalization.CompareOptions options);
public virtual int Compare (string? string1, int offset1, string? string2, int offset2, System.Globalization.CompareOptions options);
abstract member Compare : string * int * string * int * System.Globalization.CompareOptions -> int
override this.Compare : string * int * string * int * System.Globalization.CompareOptions -> int
member this.Compare : string * int * string * int * System.Globalization.CompareOptions -> int
Public Overridable Function Compare (string1 As String, offset1 As Integer, string2 As String, offset2 As Integer, options As CompareOptions) As Integer
Public Function Compare (string1 As String, offset1 As Integer, string2 As String, offset2 As Integer, options As CompareOptions) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- offset1
- Int32
Indeks zerowy znaku, w string1
którym należy rozpocząć porównywanie.
- string2
- String
Drugi ciąg do porównania.
- offset2
- Int32
Indeks zerowy znaku, w string2
którym należy rozpocząć porównywanie.
- options
- CompareOptions
Wartość definiująca sposób string1
i string2
elementy, które powinny być porównywane. options
to wartość Ordinalwyliczenia lub bitowa kombinacja co najmniej jednej z następujących wartości: IgnoreCase, , IgnoreSymbolsIgnoreNonSpace, IgnoreWidth, IgnoreKanaTypei StringSort.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Te dwa ciągi są równe. |
mniejsze niż zero | Określona sekcja elementu string1 jest mniejsza niż określona sekcja .string2
|
większe niż zero | Określona sekcja elementu string1 jest większa niż określona sekcja .string2
|
Wyjątki
offset1
wartość lub offset2
jest mniejsza niż zero.
-lub-
offset1
jest większa lub równa liczbie znaków w elemecie string1
.
-lub-
offset2
jest większa lub równa liczbie znaków w elemecie string2
.
options
zawiera nieprawidłową CompareOptions wartość.
Przykłady
Poniższy przykład porównuje fragmenty dwóch ciągów przy użyciu różnych CompareOptions ustawień.
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "My Uncle Bill's clients";
String^ myStr2 = "My uncle bills clients";
// Creates a CompareInfo that uses the InvariantCulture.
CompareInfo^ myComp = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myComp.
Console::WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1->Substring( 10 ), myStr2->Substring( 10 ) );
Console::WriteLine( " With no CompareOptions : {0}", myComp->Compare( myStr1, 10, myStr2, 10 ) );
Console::WriteLine( " With None : {0}", myComp->Compare( myStr1, 10, myStr2, 10, CompareOptions::None ) );
Console::WriteLine( " With Ordinal : {0}", myComp->Compare( myStr1, 10, myStr2, 10, CompareOptions::Ordinal ) );
Console::WriteLine( " With StringSort : {0}", myComp->Compare( myStr1, 10, myStr2, 10, CompareOptions::StringSort ) );
Console::WriteLine( " With IgnoreCase : {0}", myComp->Compare( myStr1, 10, myStr2, 10, CompareOptions::IgnoreCase ) );
Console::WriteLine( " With IgnoreSymbols : {0}", myComp->Compare( myStr1, 10, myStr2, 10, CompareOptions::IgnoreSymbols ) );
Console::WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp->Compare( myStr1, 10, myStr2, 10, static_cast<CompareOptions>(CompareOptions::IgnoreCase | CompareOptions::IgnoreSymbols) ) );
}
/*
This code produces the following output.
Comparing "ill's clients" and "ills clients"
With no CompareOptions : 1
With None : 1
With Ordinal : -76
With StringSort : -1
With IgnoreCase : 1
With IgnoreSymbols : 0
With IgnoreCase and IgnoreSymbols : 0
*/
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "My Uncle Bill's clients";
String myStr2 = "My uncle bills clients";
// Creates a CompareInfo that uses the InvariantCulture.
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myComp.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 10 ), myStr2.Substring( 10 ) );
Console.WriteLine( " With no CompareOptions : {0}", myComp.Compare( myStr1, 10, myStr2, 10 ) );
Console.WriteLine( " With None : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.None ) );
Console.WriteLine( " With Ordinal : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.Ordinal ) );
Console.WriteLine( " With StringSort : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.StringSort ) );
Console.WriteLine( " With IgnoreCase : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase ) );
Console.WriteLine( " With IgnoreSymbols : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreSymbols ) );
Console.WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare( myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols ) );
}
}
/*
This code produces the following output.
Comparing "ill's clients" and "ills clients"
With no CompareOptions : 1
With None : 1
With Ordinal : -76
With StringSort : -1
With IgnoreCase : 1
With IgnoreSymbols : 0
With IgnoreCase and IgnoreSymbols : 0
*/
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "My Uncle Bill's clients"
Dim myStr2 As [String] = "My uncle bills clients"
' Creates a CompareInfo that uses the InvariantCulture.
Dim myComp As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myComp.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1.Substring(10), myStr2.Substring(10))
Console.WriteLine(" With no CompareOptions : {0}", myComp.Compare(myStr1, 10, myStr2, 10))
Console.WriteLine(" With None : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.None))
Console.WriteLine(" With Ordinal : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.Ordinal))
Console.WriteLine(" With StringSort : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.StringSort))
Console.WriteLine(" With IgnoreCase : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase))
Console.WriteLine(" With IgnoreSymbols : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.IgnoreSymbols))
Console.WriteLine(" With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare(myStr1, 10, myStr2, 10, CompareOptions.IgnoreCase Or CompareOptions.IgnoreSymbols))
End Sub
End Class
'This code produces the following output.
'
'Comparing "ill's clients" and "ills clients"
' With no CompareOptions : 1
' With None : 1
' With Ordinal : -76
' With StringSort : -1
' With IgnoreCase : 1
' With IgnoreSymbols : 0
' With IgnoreCase and IgnoreSymbols : 0
Uwagi
Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy wywołać metody porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków zawierają znaki do pominięcia. Są to znaki nieuwzględniane podczas porównywania pod względem językowym lub z uwzględnieniem ustawień kulturowych. Metoda Compare(String, Int32, String, Int32, CompareOptions) nie uwzględnia takich znaków podczas porównywania uwzględniającego kulturę. Aby rozpoznać znaki możliwe do zignorowania w porównaniu, podaj wartość Ordinal lub OrdinalIgnoreCase dla parametru options
.
Zobacz też
Dotyczy
Compare(String, Int32, Int32, String, Int32, Int32)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje sekcję jednego ciągu z sekcją innego ciągu.
public:
virtual int Compare(System::String ^ string1, int offset1, int length1, System::String ^ string2, int offset2, int length2);
public:
int Compare(System::String ^ string1, int offset1, int length1, System::String ^ string2, int offset2, int length2);
public virtual int Compare (string string1, int offset1, int length1, string string2, int offset2, int length2);
public int Compare (string? string1, int offset1, int length1, string? string2, int offset2, int length2);
public virtual int Compare (string? string1, int offset1, int length1, string? string2, int offset2, int length2);
abstract member Compare : string * int * int * string * int * int -> int
override this.Compare : string * int * int * string * int * int -> int
member this.Compare : string * int * int * string * int * int -> int
Public Overridable Function Compare (string1 As String, offset1 As Integer, length1 As Integer, string2 As String, offset2 As Integer, length2 As Integer) As Integer
Public Function Compare (string1 As String, offset1 As Integer, length1 As Integer, string2 As String, offset2 As Integer, length2 As Integer) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- offset1
- Int32
Indeks zerowy znaku, w string1
którym należy rozpocząć porównywanie.
- length1
- Int32
Liczba kolejnych znaków do string1
porównania.
- string2
- String
Drugi ciąg do porównania.
- offset2
- Int32
Indeks zerowy znaku, w string2
którym należy rozpocząć porównywanie.
- length2
- Int32
Liczba kolejnych znaków do string2
porównania.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Te dwa ciągi są równe. |
mniejsze niż zero | Określona sekcja elementu string1 jest mniejsza niż określona sekcja .string2
|
większe niż zero | Określona sekcja elementu string1 jest większa niż określona sekcja .string2
|
Wyjątki
offset1
lub length1
offset2
lub length2
jest mniejszy niż zero.
-lub-
offset1
jest większa lub równa liczbie znaków w elemecie string1
.
-lub-
offset2
jest większa lub równa liczbie znaków w elemecie string2
.
-lub-
length1
jest większa niż liczba znaków od offset1
do końca .string1
-lub-
length2
jest większa niż liczba znaków od offset2
do końca .string2
Przykłady
Poniższy przykład porównuje fragmenty dwóch ciągów przy użyciu różnych CompareInfo obiektów:
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z rodzajem międzynarodowym
CompareInfo obiekt skojarzony z kulturą hiszpańską (Hiszpania) z tradycyjnym sortowaniem
CompareInfo obiekt skojarzony z obiektem InvariantCulture
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "calle";
String^ myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that uses the S"es-ES" culture with international sort.
CompareInfo^ myCompIntl = CompareInfo::GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that uses the S"es-ES" culture with traditional sort.
CompareInfo^ myCompTrad = CompareInfo::GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo^ myCompInva = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myCompIntl.
Console::WriteLine( "Comparing \" {0}\" and \" {1}\"", myStr1->Substring( 2, 2 ), myStr2->Substring( 2, 2 ) );
Console::WriteLine( " With myCompIntl->Compare: {0}", myCompIntl->Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
Console::WriteLine( " With myCompTrad->Compare: {0}", myCompTrad->Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
Console::WriteLine( " With myCompInva->Compare: {0}", myCompInva->Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
}
/*
This code produces the following output.
Comparing S"ll" and S"lo"
With myCompIntl.Compare: -1
With myCompTrad.Compare: 1
With myCompInva.Compare: -1
*/
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "calle";
String myStr2 = "calor";
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
CompareInfo myCompIntl = CompareInfo.GetCompareInfo( "es-ES" );
// Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
CompareInfo myCompTrad = CompareInfo.GetCompareInfo( 0x040A );
// Uses the CompareInfo property of the InvariantCulture.
CompareInfo myCompInva = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myCompIntl.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 2, 2 ), myStr2.Substring( 2, 2 ) );
Console.WriteLine( " With myCompIntl.Compare: {0}", myCompIntl.Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
Console.WriteLine( " With myCompTrad.Compare: {0}", myCompTrad.Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
Console.WriteLine( " With myCompInva.Compare: {0}", myCompInva.Compare( myStr1, 2, 2, myStr2, 2, 2 ) );
}
}
/*
This code produces the following output.
Comparing "ll" and "lo"
With myCompIntl.Compare: -1
With myCompTrad.Compare: 1
With myCompInva.Compare: -1
*/
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "calle"
Dim myStr2 As [String] = "calor"
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with international sort.
Dim myCompIntl As CompareInfo = CompareInfo.GetCompareInfo("es-ES")
' Uses GetCompareInfo to create the CompareInfo that uses the "es-ES" culture with traditional sort.
Dim myCompTrad As CompareInfo = CompareInfo.GetCompareInfo(&H40A)
' Uses the CompareInfo property of the InvariantCulture.
Dim myCompInva As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myCompIntl.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1.Substring(2, 2), myStr2.Substring(2, 2))
Console.WriteLine(" With myCompIntl.Compare: {0}", myCompIntl.Compare(myStr1, 2, 2, myStr2, 2, 2))
Console.WriteLine(" With myCompTrad.Compare: {0}", myCompTrad.Compare(myStr1, 2, 2, myStr2, 2, 2))
Console.WriteLine(" With myCompInva.Compare: {0}", myCompInva.Compare(myStr1, 2, 2, myStr2, 2, 2))
End Sub
End Class
'This code produces the following output.
'
'Comparing "ll" and "lo"
' With myCompIntl.Compare: -1
' With myCompTrad.Compare: 1
' With myCompInva.Compare: -1
Uwagi
Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy użyć metod porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków obejmują znaki do pominięcia. Metoda Compare(String, Int32, Int32, String, Int32, Int32) nie uwzględnia tych znaków podczas przeprowadzania porównania językowego lub wrażliwego na kulturę. Aby rozpoznać znaki możliwe do zignorowania w porównaniu, wywołaj metodę Compare(String, Int32, Int32, String, Int32, Int32, CompareOptions) i podaj wartość Ordinal lub OrdinalIgnoreCase dla parametru options
.
Dotyczy
Compare(String, Int32, Int32, String, Int32, Int32, CompareOptions)
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
- Źródło:
- CompareInfo.cs
Porównuje sekcję jednego ciągu z sekcją innego ciągu przy użyciu określonej CompareOptions wartości.
public:
virtual int Compare(System::String ^ string1, int offset1, int length1, System::String ^ string2, int offset2, int length2, System::Globalization::CompareOptions options);
public:
int Compare(System::String ^ string1, int offset1, int length1, System::String ^ string2, int offset2, int length2, System::Globalization::CompareOptions options);
public virtual int Compare (string string1, int offset1, int length1, string string2, int offset2, int length2, System.Globalization.CompareOptions options);
public int Compare (string? string1, int offset1, int length1, string? string2, int offset2, int length2, System.Globalization.CompareOptions options);
public virtual int Compare (string? string1, int offset1, int length1, string? string2, int offset2, int length2, System.Globalization.CompareOptions options);
abstract member Compare : string * int * int * string * int * int * System.Globalization.CompareOptions -> int
override this.Compare : string * int * int * string * int * int * System.Globalization.CompareOptions -> int
member this.Compare : string * int * int * string * int * int * System.Globalization.CompareOptions -> int
Public Overridable Function Compare (string1 As String, offset1 As Integer, length1 As Integer, string2 As String, offset2 As Integer, length2 As Integer, options As CompareOptions) As Integer
Public Function Compare (string1 As String, offset1 As Integer, length1 As Integer, string2 As String, offset2 As Integer, length2 As Integer, options As CompareOptions) As Integer
Parametry
- string1
- String
Pierwszy ciąg do porównania.
- offset1
- Int32
Indeks zerowy znaku, w string1
którym należy rozpocząć porównywanie.
- length1
- Int32
Liczba kolejnych znaków do string1
porównania.
- string2
- String
Drugi ciąg do porównania.
- offset2
- Int32
Indeks zerowy znaku, w string2
którym należy rozpocząć porównywanie.
- length2
- Int32
Liczba kolejnych znaków do string2
porównania.
- options
- CompareOptions
Wartość definiująca sposób string1
i string2
elementy, które powinny być porównywane. options
to wartość Ordinalwyliczenia lub bitowa kombinacja co najmniej jednej z następujących wartości: IgnoreCase, , IgnoreSymbolsIgnoreNonSpace, IgnoreWidth, IgnoreKanaTypei StringSort.
Zwraca
32-bitowa liczba całkowita ze znakiem wskazująca relację leksykalną między dwoma współzadziale.
Wartość | Warunek |
---|---|
zero | Dwa ciągi są równe. |
mniejsze niż zero | Określona sekcja elementu string1 jest mniejsza niż określona sekcja .string2
|
większe niż zero | Określona sekcja elementu string1 jest większa niż określona sekcja .string2
|
Wyjątki
offset1
lub length1
offset2
lub length2
jest mniejszy niż zero.
-lub-
offset1
jest większa lub równa liczbie znaków w elemecie string1
.
-lub-
offset2
jest większa lub równa liczbie znaków w elemecie string2
.
-lub-
length1
jest większa niż liczba znaków od offset1
do końca .string1
-lub-
length2
jest większa niż liczba znaków od offset2
do końca .string2
options
zawiera nieprawidłową CompareOptions wartość.
Przykłady
Poniższy przykład porównuje fragmenty dwóch ciągów przy użyciu różnych CompareOptions ustawień.
using namespace System;
using namespace System::Globalization;
int main()
{
// Defines the strings to compare.
String^ myStr1 = "My Uncle Bill's clients";
String^ myStr2 = "My uncle bills clients";
// Creates a CompareInfo that uses the InvariantCulture.
CompareInfo^ myComp = CultureInfo::InvariantCulture->CompareInfo;
// Compares two strings using myComp.
Console::WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1->Substring( 3, 10 ), myStr2->Substring( 3, 10 ) );
Console::WriteLine( " With no CompareOptions : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10 ) );
Console::WriteLine( " With None : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions::None ) );
Console::WriteLine( " With Ordinal : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions::Ordinal ) );
Console::WriteLine( " With StringSort : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions::StringSort ) );
Console::WriteLine( " With IgnoreCase : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions::IgnoreCase ) );
Console::WriteLine( " With IgnoreSymbols : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions::IgnoreSymbols ) );
Console::WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp->Compare( myStr1, 3, 10, myStr2, 3, 10, static_cast<CompareOptions>(CompareOptions::IgnoreCase | CompareOptions::IgnoreSymbols) ) );
}
/*
This code produces the following output.
Comparing "Uncle Bill" and "uncle bill"
With no CompareOptions : 1
With None : 1
With Ordinal : -32
With StringSort : 1
With IgnoreCase : 0
With IgnoreSymbols : 1
With IgnoreCase and IgnoreSymbols : 0
*/
using System;
using System.Globalization;
public class SamplesCompareInfo {
public static void Main() {
// Defines the strings to compare.
String myStr1 = "My Uncle Bill's clients";
String myStr2 = "My uncle bills clients";
// Creates a CompareInfo that uses the InvariantCulture.
CompareInfo myComp = CultureInfo.InvariantCulture.CompareInfo;
// Compares two strings using myComp.
Console.WriteLine( "Comparing \"{0}\" and \"{1}\"", myStr1.Substring( 3, 10 ), myStr2.Substring( 3, 10 ) );
Console.WriteLine( " With no CompareOptions : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10 ) );
Console.WriteLine( " With None : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.None ) );
Console.WriteLine( " With Ordinal : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.Ordinal ) );
Console.WriteLine( " With StringSort : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.StringSort ) );
Console.WriteLine( " With IgnoreCase : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreCase ) );
Console.WriteLine( " With IgnoreSymbols : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreSymbols ) );
Console.WriteLine( " With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare( myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreCase | CompareOptions.IgnoreSymbols ) );
}
}
/*
This code produces the following output.
Comparing "Uncle Bill" and "uncle bill"
With no CompareOptions : 1
With None : 1
With Ordinal : -32
With StringSort : 1
With IgnoreCase : 0
With IgnoreSymbols : 1
With IgnoreCase and IgnoreSymbols : 0
*/
Imports System.Globalization
Public Class SamplesCompareInfo
Public Shared Sub Main()
' Defines the strings to compare.
Dim myStr1 As [String] = "My Uncle Bill's clients"
Dim myStr2 As [String] = "My uncle bills clients"
' Creates a CompareInfo that uses the InvariantCulture.
Dim myComp As CompareInfo = CultureInfo.InvariantCulture.CompareInfo
' Compares two strings using myComp.
Console.WriteLine("Comparing ""{0}"" and ""{1}""", myStr1.Substring(3, 10), myStr2.Substring(3, 10))
Console.WriteLine(" With no CompareOptions : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10))
Console.WriteLine(" With None : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.None))
Console.WriteLine(" With Ordinal : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.Ordinal))
Console.WriteLine(" With StringSort : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.StringSort))
Console.WriteLine(" With IgnoreCase : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreCase))
Console.WriteLine(" With IgnoreSymbols : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreSymbols))
Console.WriteLine(" With IgnoreCase and IgnoreSymbols : {0}", myComp.Compare(myStr1, 3, 10, myStr2, 3, 10, CompareOptions.IgnoreCase Or CompareOptions.IgnoreSymbols))
End Sub
End Class
'This code produces the following output.
'
'Comparing "Uncle Bill" and "uncle bill"
' With no CompareOptions : 1
' With None : 1
' With Ordinal : -32
' With StringSort : 1
' With IgnoreCase : 0
' With IgnoreSymbols : 1
' With IgnoreCase and IgnoreSymbols : 0
Uwagi
Jeśli decyzja dotycząca zabezpieczeń zależy od porównania ciągów lub zmiany wielkości liter, należy użyć InvariantCulture właściwości , aby upewnić się, że zachowanie jest spójne niezależnie od ustawień kultury systemu operacyjnego.
Uwaga
Jeśli to możliwe, należy wywołać metody porównania ciągów, które mają parametr typu CompareOptions , aby określić rodzaj oczekiwanego porównania. Ogólnie rzecz biorąc, użyj opcji językowych (przy użyciu bieżącej kultury) do porównywania ciągów wyświetlanych w interfejsie użytkownika i określenia Ordinal lub OrdinalIgnoreCase porównania zabezpieczeń.
Uwagi dotyczące wywoływania
Zestawy znaków obejmują znaki do pominięcia. Metoda Compare(String, Int32, Int32, String, Int32, Int32, CompareOptions) nie uwzględnia tych znaków podczas porównywania uwzględniającego kulturę. Aby rozpoznać znaki możliwe do zignorowania w porównaniu, podaj wartość Ordinal lub OrdinalIgnoreCase dla parametru options
.