Строки и теоретико-множественные операции 🧠



Добро пожаловать в экспериментальную рубрику "сомнительно, но окЭй" 😅



Допустим, у нас есть некоторая строка и набор символов.



Надо решить две задачи:



1️⃣Проверить содержит ли строка хотя бы один символ из набора. Для этого надо проверить пересечение двух множеств - строка & символы != пустое множество



2️⃣Проверить содержит ли строка все указанные символы. Тут налицо математическое определение подмножества.



LINQ в C#, а также API интерфейса ISet<> даёт все возможности для лаконичного программирования указанных решений:



public static class StringExtensions

{

public static bool ContainsAnySymbol(

this string str,

IEnumerable<char> symbols) =>

str.Intersect(symbols).Any();



public static bool ContainsAllSymbols(

this string str,

IEnumerable<char> symbols) =>

symbols.ToHashSet().IsSubsetOf(str.ToHashSet());

}