Определить ненужные символы в строке - PullRequest
5 голосов
/ 31 августа 2011

Я хочу разрешить пользователю вводить символы, цифры и специальные символы, но не символы JUNK (например, ♣ ♣ и т. Д.), Значение ascii которых больше, чем 127.

У меня есть такая функция

            for (int i = 0; i < value.Length; i++) // value is input string
            {
                if ((int)value[i] < 32 || (int)value[i] > 126)
                {

                         // show error

                 }

            }

Это делает код немного медленнее, так как мне приходится сравнивать каждую строку и ее символ. Кто-нибудь может предложить лучший подход?

Ответы [ 2 ]

8 голосов
/ 31 августа 2011

Ну, во-первых, вы можете сделать код проще :

foreach (char c in value)
{
    if (c < 32 || c > 126)
    {
        ...
    }
}

Или используя LINQ, если вам просто нужно знать, являются ли какие-либо символыnon-ASCII:

bool bad = value.Any(c => c < 32 || c > 126);

... но принципиально вы не сможете обнаружить не-ASCII символы без итерации по каждому символу в строке ...

1 голос
/ 31 августа 2011

Вы можете сделать регулярное выражение, в котором разрешены все нужные символы, и использовать его для каждой строки.Я думаю, что это улучшит производительность.Все, что вам нужно сделать, это создать правильное регулярное выражение.

Обновление: Однако использование RegEx не повысит скорость, а просто минимизирует строки кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...