#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. Спасибо, это сделало это. Какие еще проблемы вы предвидите?