C# Uz lietām nejūtīga lietussargu nesaturoša satur virknes pārbaude
Šajā pamācībā mēs mācāmies dažādus veidus, kā veikt uz mazajiem un lielajiem burtiem neievērojošu virknes satur pārbaudi C# valodā
Izskatās, ka tā ir vienkārša problēma, bet noklusējuma C# string.Contains()
metodei ir lielo un mazo burtu atšķirība
Un, ja virkne nav angļu valodā, t. i., citās valodās, mēs nevaram tieši salīdzināt tekstu, neņemot vērā mazo un lielo izmēru
Abām virknēm jābūt vienas un tās pašas kultūras, un mums jāzina valodas kultūra.
Lielākoties mēs salīdzinām virknes tikai angļu valodā.
1. metode: izmantojot C# string.IndexOf()
metodi.
Mēs varam izmantot C# string.IndexOf()
metodi, lai pārbaudītu, vai virkne satur maznozīmīgu virkni.
IndexOf()
metode pieņem StringComparison.OrdinalIgnoreCase
parametru, kas norāda meklēšanas veidu, kas jāizmanto rakstzīmēm.
string textToCheck = "STRING Contains";
bool contains = textToCheck.IndexOf("string", StringComparison.OrdinalIgnoreCase) >= 0;
2. metode: string.Contains()
metodes izmantošana .Net 5+ un .NET Core 2.0+ lietojumprogrammā
Jaunākajās dot net versijās, t. i., .Net Core 2.0+ un .Net 5+. Metodei string.Contains()
ir pārslogota metode, kas pieņem parametru StringComparison
.
string textToCheck = "STRING Contains";
bool checkContains = textToCheck.Contains("string",StringComparison.OrdinalIgnoreCase);
3. metode: izmantojot Regex.IsMatch()
metodi
Mēs varam izmantot regulārās izteiksmes, lai pārbaudītu, vai virkne satur maznozīmīgu virkni.
Ja esat iepazinušies ar Regex
, izmantojiet Regex.IsMatch()
metodi, un, lai pārbaudītu, vai nav jānorāda lieli un mazie burti, nododiet RegexOptions.IgnoreCase
parametru
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = Regex.IsMatch(stringToCheck, Regex.Escape(substring), RegexOptions.IgnoreCase);
//true
4. metode: Izmantojot .ToUpper()
& .ToLower()
Ja virknes ir angļu valodā un veiktspēja nav problēma, mēs varam konvertēt abas virknes vienā un tajā pašā gadījumā un pēc tam veikt pārbaudi, vai virkne satur.
var stringToSearch = "hI hEllo";
var substring = "hello";
bool contains = stringToSearch.ToLower().Contains(substring.ToLower());
or
bool contains = stringToSearch.ToUpper().Contains(substring.ToUpper());
//true
C# C# Lietošanas gadījuma nejūtīga pārbaude “satur” citās valodās
Lietošanas mazjūtība pret mazajiem un lielajiem burtiem ir atkarīga no valodas
Piemēram, angļu valodā I
ir i
lielo burtu versija.
Turku valodā i
lielais burts ir nepazīstams raksturs İ
.
Lai pārbaudītu virknes maznozīmju pārbaudi, mums jāizmanto objekts 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
Es esmu izveidojis CultureInfo
objektu turku valodai. Un salīdzināju abas virknes, izmantojot CompareInfo
, kā parādīts zemāk.
trCulture.CompareInfo.IndexOf(check, text, CompareOptions.IgnoreCase) >= 0;
Labākais veids, kā pārbaudīt, vai virkne satur maznozīmīgu lietvārdu un burtu virkni
Ja izmantojat jaunāko .Net
versiju, izmantojiet string.Contains()
metodi.
Pretējā gadījumā izmantojiet string.IndexOf()
metodi.
Nelietojiet .ToUpper()
vai To.Lower()
metodi, jo tās var radīt veiktspējas problēmas.
Citu valodu virknēm izmantojiet CultureInfo
objektu.