C# Kontrola řetězce Contains bez ohledu na velikost písmen
- Metoda 1: Použití metody C#
string.IndexOf()
. - Metoda 2: Použití metody
string.Contains()
v sítích .Net 5+ a .NET Core 2.0+ - Metoda 3: Použití metody
Regex.IsMatch()
- Metoda 4: Použití
.ToUpper()
&.ToLower()
- C# Kontrola obsahuje bez ohledu na velikost písmen pro ostatní jazyky
- Nejlepší způsob, jak provést kontrolu řetězce Contains bez ohledu na velikost písmen
On this page
- Metoda 1: Použití metody C#
string.IndexOf()
. - Metoda 2: Použití metody
string.Contains()
v sítích .Net 5+ a .NET Core 2.0+ - Metoda 3: Použití metody
Regex.IsMatch()
- Metoda 4: Použití
.ToUpper()
&.ToLower()
- C# Kontrola obsahuje bez ohledu na velikost písmen pro ostatní jazyky
- Nejlepší způsob, jak provést kontrolu řetězce Contains bez ohledu na velikost písmen
V tomto tutoriálu se naučíme různé způsoby, jak provést kontrolu řetězce obsahuje bez ohledu na velikost písmen v jazyce C#
Vypadá to jako jednoduchý problém, ale výchozí metoda C# string.Contains()
rozlišuje malá a velká písmena
A pokud řetězec není v češtině, tj. pro jiné jazyky, nemůžeme porovnávat text bez rozlišení velikosti písmen přímo
Oba řetězce by měly být ve stejné kultuře a My bychom měli znát kulturu jazyka.
Většinou budeme porovnávat řetězce pouze v anglickém jazyce.
Metoda 1: Použití metody C# string.IndexOf()
.
Pro kontrolu řetězce obsahuje bez rozlišení velikosti písmen můžeme použít metodu C# string.IndexOf()
.
IndexOf()
metoda přijímá parametr StringComparison.OrdinalIgnoreCase
, který určuje typ vyhledávání, který se má použít pro znaky.
string textToCheck = "STRING Contains";
bool contains = textToCheck.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
Metoda 2: Použití metody string.Contains()
v sítích .Net 5+ a .NET Core 2.0+
V nejnovějších verzích dot net, tj. v .Net Core 2.0+ a .Net 5+. Metoda string.Contains()
má přetíženou metodu, která přijímá parametr StringComparison
.
string textToCheck = "STRING Contains";
bool checkContains = textToCheck.Contains("string",StringComparison.OrdinalIgnoreCase);
Metoda 3: Použití metody Regex.IsMatch()
Pro kontrolu řetězce contains bez rozlišení velikosti písmen můžeme použít regulární výrazy.
Pokud znáte metodu Regex
, použijte metodu Regex.IsMatch()
a pro kontrolu nerozlišování velkých a malých písmen předejte parametr RegexOptions.IgnoreCase
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = Regex.IsMatch(stringToCheck, Regex.Escape(substring), RegexOptions.IgnoreCase);
//true
Metoda 4: Použití .ToUpper()
& .ToLower()
Pokud jsou řetězce v anglickém jazyce a výkon není problém, můžeme oba řetězce převést na stejná velká a malá písmena a poté provést kontrolu řetězce obsahuje.
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = stringToSearch.ToLower().Contains(substring.ToLower());
or
bool contains = stringToSearch.ToUpper().Contains(substring.ToUpper());
//true
C# Kontrola obsahuje bez ohledu na velikost písmen pro ostatní jazyky
Necitlivost na malá a velká písmena je závislá na jazyce
Například v angličtině I
je velkých písmen verze i
.
Zatímco v tureckém jazyce je velkým písmenem verze i
neznámý znak İ
.
Abychom mohli provést kontrolu řetězce bez rozlišení velikosti písmen, musíme použít objekt CultureInfo
.
var text = "İ";
var check = "i";
CultureInfo trCulture = new CultureInfo("tr-TR",false);
bool englishContains = text.IndexOf(check, StringComparison.OrdinalIgnoreCase) >= 0;
//false
var turkishContains = trCulture.CompareInfo.IndexOf(check, text, CompareOptions.IgnoreCase) >= 0;
//true
Vytvořil jsem objekt CultureInfo
pro turečtinu. A porovnal jsem oba řetězce pomocí CompareInfo
, jak je uvedeno níže.
trCulture.CompareInfo.IndexOf(check, text, CompareOptions.IgnoreCase) >= 0;
Nejlepší způsob, jak provést kontrolu řetězce Contains bez ohledu na velikost písmen
Pokud používáte nejnovější verzi .Net
, použijte metodu string.Contains()
.
V opačném případě se držte metody string.IndexOf()
.
Nedávejte přednost metodě .ToUpper()
nebo To.Lower()
, protože mohou vést k problémům s výkonem.
Pro řetězce jiných jazyků použijte objekt CultureInfo
.