


Как проверить содержит ли строка числа из листа? В C#
Например в листе есть числа 55,78,83. Строка: "аолаащо74028оалащатз69055.8"-&;55)/@83@("0,04978&"/78. В этом случае если в строке содержится что то кроме 55, 78 и 83 а в нашем случае это 74028, 69055, 8, 0, 0497 (точки запятые и вообще все кроме чисел не учитывается) то возвращается false, если же наша строка выглядит так: "аолаащооалащатз55.-&;55)/@83@("&"/78 то есть из чисел содержит только те которые находятся в листе, то возвращается true
int[] nums = [55, 78, 83];
string str = "83aa";
bool res = false;
for (int i = 0; i < nums.Length; i++)
{
if (str.Contains(nums[i].ToString()))
{
res = true; break;
}
}
Console.WriteLine(res);
69055 ВНЕЗАПНО содержит искомое 55. Уверен, что оно тебе туда не надо?
Если тебе надо вычленить все числа из строки, используй регулярку @"\d+".
Вот код на C#, который выполняет проверку, содержит ли строка числа из заданного списка:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
List<int> numbersList = new List<int> { 55, 78, 83 };
string inputString = "аолаащо74028оалащатз69055.8-&;55)/@83@(&\"0,04978&\"/78";
bool containsOnlyAllowedNumbers = CheckStringAgainstList(inputString, numbersList);
Console.WriteLine(containsOnlyAllowedNumbers); // Вывод: False
string allowedString = "аолаащооалащатз55.-&;55)/@83@(&\"\"/78";
bool allowedResult = CheckStringAgainstList(allowedString, numbersList);
Console.WriteLine(allowedResult); // Вывод: True
}
static bool CheckStringAgainstList(string input, List<int> allowedNumbers)
{
string allowedNumberPattern = string.Join("|", allowedNumbers);
Regex regex = new Regex($"\\b({allowedNumberPattern})\\b");
return regex.Matches(input).Count == allowedNumbers.Count;
}
}
В метод CheckStringAgainstList мы создаем регулярное выражение на основе чисел из списка. Затем используем Regex.Matches для нахождения всех соответствий в строке. Если количество найденных совпадений равно количеству чисел в списке, то функция возвращает true, иначе - false.