У меня есть строка, и мне нужно проверить, содержит ли эта строка символы, которых нет в данном списке.
Предположим, у меня есть разрешенные символы new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' , '.'}
Если строкаis «54323.5» - это будет хорошо!
Если строка «543g23.5» - это не будет нормально, поскольку она содержит «g», которого нет в списке моих разрешенных символов.
Пустая строка считается недействительной.
Я пытаюсь добиться этого с помощью "IndexOfAny ()", но пока безуспешно.Конечно, передача всех недопустимых символов в этот метод не будет решением.
Обратите внимание, что список разрешенных символов может измениться, и изменение алгоритма проверки на основе изменения списка не считается решением.
Для вас, ребята, которые задали мне код, который я пробовал, вот оно:
private bool CheckInvalidInput(string stringToCheck)
{
char[] allowedChars = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
var chars = Enumerable.Range(0, char.MaxValue + 1)
.Select(i => (char)i)
.ToArray();
var unallowedChars = chars.Except(allowedChars).ToArray();
bool validString = true;
if(stringToCheck.IndexOfAny(unallowedChars) != -1)
{
validString = false;
}
return validString;
}
Надеюсь, что вы найдете лучшее решение: D.