Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Как проверить содержит ли строка числа из листа? В 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

По дате
По рейтингу
Аватар пользователя
Профи
12345678910111213
 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#, который выполняет проверку, содержит ли строка числа из заданного списка:

123456789101112131415161718192021222324252627
 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.