Вы можете использовать метод расширения .Contains()
из пространства имен System.Linq:
if (abc.ToLower().Contains('s')) { }
И нет, чтобы проверить, является ли логическое выражение истинным, вам не нужно == true
Поскольку метод Contains
является методом расширения, мое решение показалось некоторым странным. Вот две версии, которые не требуют добавления using System.Linq;
:
if (abc.ToLower().IndexOf('s') != -1) { }
// or:
if (abc.IndexOf("s", StringComparison.CurrentCultureIgnoreCase) != -1) { }
Обновление
Если вы хотите, вы можете написать свой собственный метод расширений для более легкого повторного использования:
public static class MyStringExtensions
{
public static bool ContainsAnyCaseInvariant(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.InvariantCultureIgnoreCase) != -1;
}
public static bool ContainsAnyCase(this string haystack, char needle)
{
return haystack.IndexOf(needle, StringComparison.CurrentCultureIgnoreCase) != -1;
}
}
Тогда вы можете назвать это так:
if (def.ContainsAnyCaseInvariant('s')) { }
// or
if (def.ContainsAnyCase('s')) { }
В большинстве случаев при работе с пользовательскими данными вы действительно хотите использовать CurrentCultureIgnoreCase
(или метод расширения ContainsAnyCase
) , потому что таким образом вы позволяете системе обрабатывать проблемы верхнего / нижнего регистра, которые зависит от языка. При работе с вычислительными проблемами, такими как имена тегов HTML и т. Д., Вы хотите использовать инвариантную культуру.
Например: на турецком языке заглавная буква I
в нижнем регистре равна ı
(без точки) , а не i
(с точкой) .