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í kulturní zvyklosti. 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í hodnotu typu Boolean.
String.EndsWith Určuje, zda řetězec končí řetězcem předaným. Vrátí hodnotu typu Boolean.
String.Contains Určuje, zda se znak nebo řetězec vyskytuje v jiném řetězci. Vrátí hodnotu typu Boolean.
String.Equals Určuje, zda jsou dva řetězce stejné. Vrátí hodnotu typu Boolean.
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.

metoda Compare

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 jsou k dispozici přetížení, která zohledňují nebo ignorují velikost písmen a kulturní odchylky. Následující tabulka uvádí tři celočíselné hodnoty, které tato metoda může vrátit.

Návratová 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

1
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 uspořádání 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?"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.Compare(string1, "Hello World?"))

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

Předchozí příklad je ve výchozím nastavení citlivý na kulturu. 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.

metoda CompareOrdinal

Metoda String.CompareOrdinal porovnává dva řetězcové objekty bez ohledu na místní kulturní nastavení. 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 uspořádání 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!"));
Dim string1 As String = "Hello World!"
Console.WriteLine(String.CompareOrdinal(string1, "hello world!"))

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

metoda CompareTo

Metoda String.CompareTo porovnává řetězec zapouzdřený aktuálním objektem řetězce 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 uspořádání 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 );
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 zobrazí -1 v konzole.

Všechna přetížení metody String.CompareTo ve výchozím nastavení provádějí porovnání citlivá na kulturní kontext a malá a velká písmena. Nejsou poskytována žádná přetížení této metody, která umožňují provádět porovnání nezávislé na kulturním prostředí. 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í rozlišující vůči kultuře i necitlivé vůči kultuře, viz Provádění porovnání řetězců Culture-Insensitive.

metoda Equals

Metoda String.Equals může snadno určit, zda jsou dva řetězce stejné. Tato metoda rozlišující velká a malá písmena vrátí hodnotu true nebo false typu Boolean. 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"));
Dim string1 As String = "Hello World"
Console.WriteLine(string1.Equals("Hello World"))

Tento příklad 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));
Dim string1 As String = "Hello World"
Dim string2 As String = "Hello World"
Console.WriteLine(String.Equals(string1, string2))

Tento příklad zobrazí True v konzole.

metody StartsWith a EndsWith

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"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.StartsWith("Hello"))

Tento příklad 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"));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.EndsWith("Hello"))

Tento příklad zobrazí False v konzole.

metody IndexOf a LastIndexOf

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'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.IndexOf("l"))

Tento příklad 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. Je citlivý na velikost písmen a používá index, který začíná nulou.

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'));
Dim string1 As String = "Hello World!"
Console.WriteLine(string1.LastIndexOf("l"))

Tento příklad 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í metod IndexOf nebo LastIndexOf a pak tuto pozici použít v metodě Remove, aby se odebral znak nebo slovo, které začíná tímto znakem.

Viz také