Рассмотрите алгоритм, который должен определить, содержит ли string
любые символы за пределами белых символов..NET Regex для символов белого списка
Белый список выглядит следующим образом:
«-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÖÜáíóúñÑÀÁÂÃÈÊËÌÍÎÏÐÒÓÔÕØÙÚÛÝßãðõøýþÿ
Примечание: пробелы и апострофы необходимо включить в этот белый список.
Обычно это будет статический метод, но он будет преобразован в метод расширения.
private bool ContainsAllWhitelistedCharacters(string input)
{
string regExPattern="";// the whitelist
return Regex.IsMatch(input, regExPattern);
}
соображение:
спасибо за комментарии производительности для всех. Отвечающих Производительность не является проблемой. Качество, удобочитаемость и ремонтопригодность! Меньше кода = меньше шансов на дефекты, ИМО.
Вопрос:
Что должно быть это белый список шаблон регулярного выражения?
Если вы создаете метод расширения для 'string', как это, он предполагает, что все строки подчиняются белым спискам за то, что они могут и не могут содержать, но это неверно. –
@ 28: спасибо за комментарий. Я понимаю, что метод будет доступен для всех членов 'string'. Разработчику было бы разумно называть метод расширения, как и его реализацию как утилиты. –
@pcampbell: вы должны создать неизменяемую структуру, содержащую строку, которая, как известно, не содержит никаких плохих символов (отмечена в конструкторе). Таким образом, в отличие от класса «Путь», вы можете работать с строкой, не выполняя проверку O (n) на наличие плохих символов. –