Вы можете использовать метод расширения .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) { }
Update
Если вы хотите, вы можете написать свой собственный метод расширения для облегчения повторного использования:
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
(с точкой).
Хм, я не нахожу перегрузки String.Contains, которая принимает аргумент обугленного. –
@ScottSmith Это метод расширения, определенный в [System.Linq] (http://msdn.microsoft.com/en-us/library/system.linq.enumerable.contains.aspx). Вам нужно добавить 'using System.Linq;' – pauloya
Я предпочитаю использовать 'str.IndexOf ('s')> = 0', но это, вероятно, просто стилистическая разница. Для меня это имеет смысл, когда читаешь для понимания. – CSS