Sdílet prostřednictvím


Porovnávání řetězců

Rozhraní .NET Framework poskytuje několik metod k porovnání hodnot řetězců. V následující tabulce jsou uvedeny a popsány metody porovnání hodnot.

Název metody

Pomocí

String.Compare

Porovnává hodnoty dvou řetězců. Vrátí celočíselnou hodnotu.

String.CompareOrdinal

Porovnává dva řetězce bez ohledu na místní jazykovou verzi. Vrátí celočíselnou hodnotu.

String.CompareTo

Porovnává objekt aktuálního řetězce s jiným řetězcem. Vrátí celočíselnou hodnotu.

String.StartsWith

Určuje, zda řetězec začíná předaným řetězcem. Vrátí hodnotu v datovém typu Boolean.

String.EndsWith

Určuje, zda řetězec končí předaným řetězcem. Vrátí hodnotu v datovém typu Boolean.

String.Equals

Určuje, zda jsou řetězce shodné. Vrátí hodnotu v datovém typu Boolean.

String.IndexOf

Vrátí index umístění znaku nebo řetězce, vzhledem k začátku řetězce, který je zkoumán. Vrátí celočíselnou hodnotu.

String.LastIndexOf

Vrátí index umístění znaku nebo řetězece, vzhledem ke konci řetězce, který je zkoumán. Vrátí celočíselnou hodnotu.

Compare

Metoda String.Compare umožňuje důkladné porovnání objektu aktuálního řetězce s jiným řetězcem nebo objektem. Tato metoda zohledňuje jazykovou verzi. Můžete tuto funkci použít k porovnání dvou řetězců nebo podřetězců dvou řetězců. Navíc jsou k dispozici přetížení, která buď berou nebo neberou ohled na velikost písmen a odlišnost jazykové verze. V následující tabulce jsou uvedeny tři celočíselné hodnoty, které mohou být vráceny touto metodou.

Typ hodnoty

Podmínka

Záporná celočíselná hodnota

strA je menší než strB.

0

strA se rovná strB.

Kladná celočíselná hodnota.

-nebo-

1

Tato instance je větší než value.

-nebo-

value je nulový odkaz (Nothing v jazyce Visual Basic).

Důležitá poznámkaDůležité

Metoda Compare je určena především pro použití při objednávání nebo řazení řetězců. Neměli byste používat metodu Compare pro testování rovnosti (to znamená pro explicitní vyhledávání návratové hodnoty 0, bez ohledu na to, zda je jeden řetězec kratší nebo delší než jiný). Místo toho, chcete-li zjistit, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison).

V následujícím příkladu je použita metoda Compare pro určení relativních hodnot dvou řetězců.

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

Tento příklad zobrazuje -1 do konzoly.

Předchozím příklad je ve výchozím nastavení citlivý na jazykovou verzi. Chcete-li provést porovnání řetězců bez ohledu na jazykovou verzi, použijte přetížení metody String.Compare, která vám umožní určit jazykovou verzi zadáním parametru culture. Příklad, který demonstruje použití metody String.Compare pro provedení porovnání bez ohledu na jazykovou verzi, naleznete v tématu Porovnávání řetězců bez ohledu na jazykovou verzi.

CompareOrdinal

Metoda String.CompareOrdinal porovná dva objekty řetězce bez zohledňení místní jazykové verze. Návratové hodnoty této metody jsou shodné s hodnotami vrácenými metodou Compare v předchozí tabulce.

Důležitá poznámkaDůležité

Metoda CompareOrdinal je určena především pro použití při objednávání nebo řazení řetězců. Neměli byste používat metodu CompareOrdinal pro testování rovnosti (to znamená pro explicitní vyhledávání návratové hodnoty 0, bez ohledu na to, zda je jeden řetězec kratší nebo delší než jiný). Místo toho, chcete-li zjistit, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison).

V následujícím příkladu je použita metoda CompareOrdinal k porovnání hodnot dvou řetězců.

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

Tento příklad zobrazuje -32 do konzoly.

CompareTo

Metoda String.CompareTo porovná řetězec, který objekt aktuálního řetězce zapouzdřuje do jiného řetězce nebo objektu. Návratové hodnoty této metody jsou shodné s hodnotami vrácenými metodou Compare v předchozí tabulce.

Důležitá poznámkaDůležité

Metoda CompareTo je určena především pro použití při objednávání nebo řazení řetězců. Neměli byste používat metodu CompareTo pro testování rovnosti (to znamená pro explicitní vyhledávání návratové hodnoty 0, bez ohledu na to, zda je jeden řetězec kratší nebo delší než jiný). Místo toho, chcete-li zjistit, zda jsou dva řetězce stejné, použijte metodu String.Equals(String, String, StringComparison).

V následujícím příkladu je použita metoda CompareTo pro porovnání objektu MyString s objektem OtherString.

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

Tento příklad zobrazuje 1 na konzolu.

Všechna přetížení metody String.CompareTo provádějí ve výchozím nastavení porovnání s ohledem na jazykovou verzi a s ohledem na velká a malá písmena. Žádná přetížení této metody pro porovnávání bez ohledu na jazykovou verzi nejsou dostupná. Pro srozumitelnost kódu je doporučeno používat metodu String.Compare namísto zadávání CultureInfo.CurrentCulture pro operace zohledňující jazykovou verzi nebo CultureInfo.InvariantCulture pro operace nezohledňující jazykovou verzi. Příklady, které ukazují způsob použití metody String.Compare pro provedení porovnání s ohledem i bez ohledu na jazykové verze, naleznete v části Porovnávání řetězců bez ohledu na jazykovou verzi.

Equals (Rovnítko)

Meotda String.Equals může snadno zjistit, zda jsou dva řetězce stejné. Tato metoda, která rozlišuje velká a malá písmena vrátí logickou hodnotu true nebo false. Lze jej použít z existující třídy, jak je znázorněno v následujícím příkladu. V následujícím příkladu je použita metoda Equals,pro určení, zda objekt řetězec obsahuje frázi Hello World.

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

Tento příklad zobrazuje True do konzoly.

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

Dim MyString As String = "Hello World!"
Dim YourString As String = "Hello World"
Console.WriteLine(String.Equals(MyString, YourString))
string MyString = "Hello World";
string YourString = "Hello World";
Console.WriteLine(String.Equals(MyString, YourString));
String^ MyString = "Hello World";
String^ YourString = "Hello World";
Console::WriteLine(String::Equals(MyString, YourString));

Tento příklad zobrazuje True do konzoly.

StartsWith a EndsWith

Můžete použít metodu String.StartsWith k určení, zda objekt řetězce začíná stejnými znaky, které zahrnuje další řetězec. Tato metoda, která rozlišuje velká a malá písmena vrátí true pokud aktuální objekt řetězce začíná předaným řetězcem a false pokud jím nezačíná. V následujícím příkladu je tato metoda použita k určení, zda objekt řetězce začíná slovem Hello.

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

Tento příklad zobrazuje True do konzoly.

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

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

Tento příklad zobrazuje False do konzoly.

IndexOf a LastIndexOf

Můžete použít metodu String.IndexOf pro určení pozice prvního výskytu určitého znaku v rámci řetězce. Tato metoda, která rozlišuje velká a malá písmena zahájí počítání od začátku řetězce a vrátí pozici předaného znaku pomocí indexu začínajícího od nuly. Pokud znak nelze nalézt, je vrácena hodnota –1.

V následujícím příkladu metoda IndexOf vyhledá první výskyt znaku l v řetězci.

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

Tento příklad zobrazuje 2 do konzoly.

Metoda String.LastIndexOf je podobná metodě String.IndexOf s výjimkou toho, že vrátí pozici posledního výskytu určitého znaku v řetězci. Rozlišuje velká a malá písmena a používá index začínající od nuly.

V následujícím příkladu metoda IndexOf vyhledá poslední výskyt znaku l v řetězci.

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

Tento příklad zobrazuje 9 do konzoly.

Obě metody jsou užitečné při použití ve spojení s metodou String.Remove. Můžete použít buď metodu IndexOf nebo LastIndexOf pro zjištění umístění znaku a potom předat tuto pozici metodě Remove s cílem odstranit znak nebo slovo, které začíná daným znakem.

Viz také

Další zdroje

Základní operace s řetězci

Provádění operací s řetězci, které jsou nezávislé na jazykové verzi