C# Case insensitive Contains string check
- Metode 1: Brug af C#
string.IndexOf()metoden. - Metode 2: Brug af
string.Contains()-metoden i .Net 5+ & .NET Core 2.0+ - Metode 3: Brug af
Regex.IsMatch()-metoden - Metode 4: Brug af
.ToUpper()&.ToLower() - C# Case insensitive Contains check for andre sprog
- Bedste måde at udføre case insensitive Contains string check
On this page
- Metode 1: Brug af C#
string.IndexOf()metoden. - Metode 2: Brug af
string.Contains()-metoden i .Net 5+ & .NET Core 2.0+ - Metode 3: Brug af
Regex.IsMatch()-metoden - Metode 4: Brug af
.ToUpper()&.ToLower() - C# Case insensitive Contains check for andre sprog
- Bedste måde at udføre case insensitive Contains string check
I denne tutorial lærer vi forskellige måder at lave case insensitive string contains check i C#
Det ser ud som et simpelt problem, men standardmetoden C# string.Contains() er case sensitive
Og hvis strengen ikke er på engelsk, dvs. for andre sprog, kan vi ikke sammenligne tekst case insensitive direkte
Begge strenge skal være i samme kultur, og vi skal kende sprogkulturen.
De fleste gange vil vi kun sammenligne strenge på engelsk sprog.
Metode 1: Brug af C# string.IndexOf() metoden.
Vi kan bruge C# string.IndexOf() -metoden til at foretage en kontrol af, om en streng indeholder en case insensitive streng.
IndexOf() metoden accepterer parameteren StringComparison.OrdinalIgnoreCase, som angiver den type søgning, der skal bruges til at søge efter tegnene.
string textToCheck = "STRING Contains";
bool contains = textToCheck.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
Metode 2: Brug af string.Contains() -metoden i .Net 5+ & .NET Core 2.0+
I de nyeste versioner af dot net, dvs. i .Net Core 2.0+ og .Net 5+. Metoden string.Contains() har en overloaded metode, som accepterer StringComparison parameteren.
string textToCheck = "STRING Contains";
bool checkContains = textToCheck.Contains("string",StringComparison.OrdinalIgnoreCase);
Metode 3: Brug af Regex.IsMatch() -metoden
Vi kan bruge regulære udtryk til at foretage case insensitive contains string check.
Hvis du er bekendt med Regex, skal du bruge Regex.IsMatch() -metoden og for at kontrollere, om der ikke er forskel på store og små bogstaver, skal du bruge RegexOptions.IgnoreCase -parameteren
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = Regex.IsMatch(stringToCheck, Regex.Escape(substring), RegexOptions.IgnoreCase);
//true
Metode 4: Brug af .ToUpper() & .ToLower()
Hvis strengene er på engelsk, og ydelsen ikke er et problem, kan vi konvertere begge strenge til samme kasus og derefter kontrollere, at strengen indeholder.
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = stringToSearch.ToLower().Contains(substring.ToLower());
or
bool contains = stringToSearch.ToUpper().Contains(substring.ToUpper());
//true
C# Case insensitive Contains check for andre sprog
Kasusafhængighed er sprogafhængigt
På engelsk er I f.eks. den store bogstavsudgave af i.
På det tyrkiske sprog er den store bogstavsversion af i det ukendte tegn İ.
For at foretage en kontrol af en streng uden hensyn til store og små bogstaver skal vi bruge CultureInfo -objektet.
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
Jeg har oprettet CultureInfo objektet for det tyrkiske sprog. Og sammenlignet begge strenge ved hjælp af CompareInfo som vist nedenfor.
trCulture.CompareInfo.IndexOf(check, text, CompareOptions.IgnoreCase) >= 0;
Bedste måde at udføre case insensitive Contains string check
Hvis du bruger den nyeste version af .Net, skal du bruge string.Contains() -metoden.
Ellers skal du holde dig til string.IndexOf() -metoden.
Du bør ikke foretrække .ToUpper() eller To.Lower(), da de kan give problemer med ydeevnen.
Brug CultureInfo -objektet til strenge på andre sprog.