Sdílet prostřednictvím


Porovnání řetězců v .NET

.NET poskytuje několik metod pro porovnání hodnot řetězců. Následující tabulka uvádí a popisuje metody porovnání hodnot.

Název metody Používání
String.Compare Porovná hodnoty dvou řetězců. Vrátí celočíselnou hodnotu.
String.CompareOrdinal Porovná dva řetězce bez ohledu na místní jazykovou verzi. Vrátí celočíselnou hodnotu.
String.CompareTo Porovná aktuální objekt řetězce s jiným řetězcem. Vrátí celočíselnou hodnotu.
String.StartsWith Určuje, zda řetězec začíná řetězcem předaným. Vrátí logickou hodnotu.
String.EndsWith Určuje, zda řetězec končí řetězcem předaným. Vrátí logickou hodnotu.
String.Contains Určuje, zda se znak nebo řetězec vyskytuje v jiném řetězci. Vrátí logickou hodnotu.
String.Equals Určuje, zda jsou dva řetězce stejné. Vrátí logickou hodnotu.
String.IndexOf Vrátí pozici indexu znaku nebo řetězce počínaje začátkem řetězce, který zkoumáte. Vrátí celočíselnou hodnotu.
String.LastIndexOf Vrátí pozici indexu znaku nebo řetězce počínaje koncem řetězce, který zkoumáte. Vrátí celočíselnou hodnotu.

Compare Metoda

Statická String.Compare metoda poskytuje důkladný způsob porovnání dvou řetězců. Tato metoda je kulturně vědoma. Pomocí této funkce můžete porovnat dva řetězce nebo podřetězce dvou řetězců. Kromě toho se za předpokladu, že přetížení považují nebo ignorují případ a kulturní odchylky. Následující tabulka uvádí tři celočíselné hodnoty, které tato metoda může vrátit.

Vrácená hodnota Podmínka
Záporné celé číslo První řetězec předchází druhému řetězci v pořadí řazení.

nebo

První řetězec je null.
0 První řetězec a druhý řetězec jsou stejné.

nebo

Oba řetězce jsou null.
Kladné celé číslo

nebo

0
První řetězec následuje za druhým řetězcem v pořadí řazení.

nebo

Druhý řetězec je null.

Důležité

Metoda String.Compare je primárně určena k použití při řazení nebo řazení řetězců. Metodu String.Compare byste neměli používat k testování rovnosti (to znamená explicitně hledat návratovou hodnotu 0 bez ohledu na to, zda je jeden řetězec menší nebo větší než druhý). Místo toho k určení, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison) .

Následující příklad používá metodu String.Compare k určení relativních hodnot dvou řetězců.

String^ string1 = "Hello World!";
Console::WriteLine(String::Compare(string1, "Hello World?"));
string string1 = "Hello World!";
Console.WriteLine(String.Compare(string1, "Hello World?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

Tento příklad se zobrazí -1 v konzole.

Předchozí příklad je ve výchozím nastavení citlivý na jazykovou verzi. Chcete-li provést porovnání řetězců bez rozlišení jazykové verze, použijte přetížení String.Compare metody, která umožňuje určit jazykovou verzi, která se má použít zadáním parametru jazykové verze . Příklad, který ukazuje, jak použít metodu String.Compare k provedení porovnání nerozlišující jazykovou verzi, viz porovnání řetězců nerozlišující jazykovou verzi.

CompareOrdinal Metoda

Metoda String.CompareOrdinal porovnává dva řetězcové objekty bez ohledu na místní jazykovou verzi. Návratové hodnoty této metody jsou stejné jako hodnoty vrácené metodou Compare v předchozí tabulce.

Důležité

Metoda String.CompareOrdinal je primárně určena k použití při řazení nebo řazení řetězců. Metodu String.CompareOrdinal byste neměli používat k testování rovnosti (to znamená explicitně hledat návratovou hodnotu 0 bez ohledu na to, zda je jeden řetězec menší nebo větší než druhý). Místo toho k určení, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison) .

Následující příklad používá metodu CompareOrdinal k porovnání hodnot dvou řetězců.

String^ string1 = "Hello World!";
Console::WriteLine(String::CompareOrdinal(string1, "hello world!"));
string string1 = "Hello World!";
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

Tento příklad se zobrazí -32 v konzole.

CompareTo Metoda

Metoda String.CompareTo porovnává řetězec, který aktuální objekt řetězce zapouzdřuje s jiným řetězcem nebo objektem. Návratové hodnoty této metody jsou stejné jako hodnoty vrácené metodou String.Compare v předchozí tabulce.

Důležité

Metoda String.CompareTo je primárně určena k použití při řazení nebo řazení řetězců. Metodu String.CompareTo byste neměli používat k testování rovnosti (to znamená explicitně hledat návratovou hodnotu 0 bez ohledu na to, zda je jeden řetězec menší nebo větší než druhý). Místo toho k určení, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison) .

Následující příklad používá metodu String.CompareTostring1 k porovnání objektu s objektem string2 .

String^ string1 = "Hello World";
String^ string2 = "Hello World!";
int MyInt = string1->CompareTo(string2);
Console::WriteLine( MyInt );
string string1 = "Hello World";
string string2 = "Hello World!";
int MyInt = string1.CompareTo(string2);
Console.WriteLine( MyInt );
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World!"
Dim MyInt As Integer = string1.CompareTo(string2)
Console.WriteLine(MyInt)

Tento příklad se zobrazí -1 v konzole.

Všechna přetížení String.CompareTo metody ve výchozím nastavení provádějí porovnání citlivá na jazykové verze a malá a velká písmena. Nejsou poskytována žádná přetížení této metody, které umožňují provádět porovnání bez rozlišení jazykové verze. Pro srozumitelnost kódu doporučujeme místo toho použít metodu String.Compare , která určuje CultureInfo.CurrentCulture operace citlivé na jazykovou verzi nebo CultureInfo.InvariantCulture pro operace nerozlišující jazykovou verzi. Příklady, které ukazují, jak použít metodu String.Compare k provádění porovnání citlivých na jazykovou verzi i bez rozlišení jazykové verze, naleznete v tématu Provádění porovnání řetězců bez rozlišení jazykové verze.

Equals Metoda

Metoda String.Equals může snadno určit, zda jsou dva řetězce stejné. Tato metoda citlivá na malá a velká písmena true vrátí logickou false hodnotu. Dá se použít z existující třídy, jak je znázorněno v dalším příkladu. Následující příklad používá metodu Equals k určení, zda řetězcový objekt obsahuje frázi "Hello World".

String^ string1 = "Hello World";
Console::WriteLine(string1->Equals("Hello World"));
string string1 = "Hello World";
Console.WriteLine(string1.Equals("Hello World"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

Tento příklad se zobrazí True v konzole.

Tuto metodu lze použít také jako statickou metodu. Následující příklad porovnává dva řetězcové objekty pomocí statické metody.

String^ string1 = "Hello World";
String^ string2 = "Hello World";
Console::WriteLine(String::Equals(string1, string2));
string string1 = "Hello World";
string string2 = "Hello World";
Console.WriteLine(String.Equals(string1, string2));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

Tento příklad se zobrazí True v konzole.

StartsWith a EndsWith metody

Metodu String.StartsWith můžete použít k určení, zda objekt řetězce začíná stejnými znaky, které zahrnují jiný řetězec. Tato metoda citlivá na malá a velká písmena vrátí true , pokud aktuální objekt řetězce začíná předaným řetězcem a false pokud ne. Následující příklad používá tuto metodu k určení, zda řetězcový objekt začíná na "Hello".

String^ string1 = "Hello World";
Console::WriteLine(string1->StartsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.StartsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

Tento příklad se zobrazí True v konzole.

Metoda String.EndsWith porovnává předaný řetězec se znaky, které existují na konci aktuálního objektu řetězce. Vrátí také logickou hodnotu. Následující příklad zkontroluje konec řetězce pomocí EndsWith metody.

String^ string1 = "Hello World";
Console::WriteLine(string1->EndsWith("Hello"));
string string1 = "Hello World";
Console.WriteLine(string1.EndsWith("Hello"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

Tento příklad se zobrazí False v konzole.

IndexOf a LastIndexOf metody

Pomocí této metody můžete String.IndexOf určit pozici prvního výskytu konkrétního znaku v řetězci. Tato metoda citlivá na malá a velká písmena začne počítat od začátku řetězce a vrátí pozici předaného znaku pomocí indexu založeného na nule. Pokud se znak nenajde, vrátí se hodnota -1.

Následující příklad používá metodu IndexOf k vyhledání prvního výskytu znaku 'l' v řetězci.

String^ string1 = "Hello World";
Console::WriteLine(string1->IndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.IndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

Tento příklad se zobrazí 2 v konzole.

Metoda String.LastIndexOf je podobná metodě s tím rozdílem String.IndexOf , že vrací pozici posledního výskytu konkrétního znaku v řetězci. Rozlišují se malá a velká písmena a používá index založený na nule.

Následující příklad používá metodu LastIndexOf k vyhledání posledního výskytu znaku 'l' v řetězci.

String^ string1 = "Hello World";
Console::WriteLine(string1->LastIndexOf('l'));
string string1 = "Hello World";
Console.WriteLine(string1.LastIndexOf('l'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

Tento příklad se zobrazí 9 v konzole.

Obě metody jsou užitečné při použití ve spojení s metodou String.Remove . Umístění znaku můžete načíst pomocí IndexOf metod nebo LastIndexOf metod a pak tuto pozici Remove zadat metodě, aby se odebral znak nebo slovo, které začíná tímto znakem.

Viz také