Как проверить, содержит ли строка символы, находящиеся за пределами данного списка символовC#

Место общения программистов C#
Anonymous
Как проверить, содержит ли строка символы, находящиеся за пределами данного списка символов

Сообщение Anonymous »

У меня есть строка, и мне нужно проверить, содержит ли эта строка какие-либо символы, которых нет в заданном списке.

Предположим, у меня есть разрешенные символы new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' , '.'

If string это "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.

Вернуться в «C#»