Простой Тестер паролей C#

#c# #testing #passwords #.net-framework-4.8

#c# #тестирование #пароли #.net-4.8

Вопрос:

Я работаю с очень простым тестером паролей. Я пытаюсь сравнить входную строку с заданной строкой допустимых символов.

 public static bool hasRequiredChar(string input)
{
    input = "input";
    string requiredChar = "abcde";

    foreach (var item in requiredChar)
    {
        if (input.Contains(item)) return true;
    }

    return false;
}
 

Если я использую только System, я получаю сообщение об ошибке: «Аргумент 1: невозможно преобразовать из ‘char’ в’string'». Это относится к строке.Содержит метод (). Есть идеи?

Я знаю, что есть 1000 способов написать это по-другому, но я не хочу использовать регулярные выражения, Linq или что-либо другое, кроме System.

Комментарии:

1. Приведенный выше код никоим образом не выдает эту ошибку. string содержит перегрузки для обоих char string параметров и .

2. Попробуйте это в DotNetFiddle самостоятельно, это вызывает ошибку времени компиляции.

3. Или, может быть, вы используете .NET Framework, который не char перегружен? Вам нужно рассказать нам больше.

Ответ №1:

Вы переходите к string.Contains символу, когда в .NET Framework он вместо этого ожидает строку. Чтобы передать аргумент, просто сначала приведите его к строке.

 foreach (var item in requiredChar)
{
    if (input.Contains(item.ToString()) return true;
}
 

Есть некоторые другие проблемы с вашим подходом, если вы пытаетесь проверить, содержит ли строка все требуемые символы, но это помимо вашей ошибки.

Комментарии:

1.За исключением того, что он принимает char docs.microsoft.com/en-us/dotnet/api /…

2. Да, они могут использовать .NET Framework 4.x, см. Мой комментарий к вопросу.

3. Именно поэтому я предложил вместо этого использовать строку. Нет причин быть таким тупым.

4. Как именно я был тупым? Я просто объяснял вещи. И если бы вы знали, что это была вещь .NET 4.x, вы должны были упомянуть об этом в ответе.

5. Спасибо, это сделало это. Какие еще проблемы вы предвидите?