Betrachten Sie einen Algorithmus, der bestimmen muss, ob eine string
Zeichen außerhalb der Whitelist-Zeichen enthält..NET Regex für Whitelist-Zeichen
Die weiße Liste sieht wie folgt aus:
‚-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÖÜáíóúñÑÀÁÂÃÈÊËÌÍÎÏÐÒÓÔÕØÙÚÛÝßãðõøýþÿ
Hinweis: Räume und Apostrophe nötig sind, um in diesem Whitelist aufgenommen werden.
In der Regel ist dies eine statische Methode, die jedoch in eine Erweiterungsmethode konvertiert wird.
private bool ContainsAllWhitelistedCharacters(string input)
{
string regExPattern="";// the whitelist
return Regex.IsMatch(input, regExPattern);
}
Überlegungen:
Vielen Dank für die Leistung Kommentare zu allen Beantworter. Leistung ist kein Problem. Qualität, Lesbarkeit und Wartbarkeit ist! Weniger Code = weniger Chance für Defekte, IMO.
Frage:
Was sollte diese weiße Liste RegexMuster sein?
Wenn Sie eine Erweiterungsmethode für 'string' erstellen, wird vorgeschlagen, dass alle Zeichenfolgen einer Whitelist unterliegen, was sie enthalten können und was nicht, aber das stimmt nicht. –
@ 28: Danke für den Kommentar. Ich weiß, dass die Methode für alle "String" -Mitglieder verfügbar sein würde. Es wäre Sache des Entwicklers, weise die Erweiterungsmethode aufzurufen, genau wie bei der Implementierung als Hilfsmethode. –
@ pcampbell: Sie sollten eine unveränderliche Struktur erstellen, die eine Zeichenfolge enthält, von der bekannt ist, dass sie keine fehlerhaften Zeichen enthält (im Konstruktor markiert). Auf diese Weise können Sie im Gegensatz zur Klasse "Path" mit der Zeichenfolge arbeiten, ohne eine O (n) -Prüfung auf ungültige Zeichen durchführen zu müssen. –