Нет, встроенной функции нет. Но это не сложно написать самому:
string[] needles = new string[]{"BOUGHT", "PURCHASE"};
string haystack = description.ToUpperInvariant();
bool found = needles.Any(needle=> haystack.Contains(needle));
Я конвертирую hackstack
в верхний только один раз для улучшения производительности.
В качестве альтернативы вы можете использовать IndexOf(needle, StringComparison.OrdinalIgnoreCase)>=0
:
string[] needles = new string[]{"BOUGHT", "PURCHASE"};
string haystack = description;
bool found = needles.Any(needle=> haystack.IndexOf(needle, StringComparison.OrdinalIgnoreCase)>=0);
Вы не должны использовать ToUpper()
здесь, так как это использует текущую культуру. Использование текущей культуры может привести к непредвиденным проблемам на некоторых компьютерах, например, i
не использует заглавные буквы до I
при использовании турецкой культуры.
Могут остаться некоторые тонкие проблемы, когда ToUpperInvariant()
с обеих сторон, и сравнение без учета регистра может дать разные результаты, но это актуально, только если в вашем стоге сена и иголках есть необычные символы.