Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
.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é
- Osvědčené postupy pro používání řetězců v .NET
- Provádění operací řetězců bez rozlišení jazykové verze
- Řazení tabulek váhy – používané rozhraním .NET Framework a .NET Core 1.0-3.1 ve Windows
- Výchozí tabulka elementů kolace Unicode – používá ji .NET 5 na všech platformách a .NET Core v Linuxu a macOS