string
にホワイトリスト文字以外の文字が含まれているかどうかを判断するアルゴリズムを検討してください。ホワイトリスト文字の.NET正規表現
「-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÖÜáíóúñÑÀÁÂÃÈÊËÌÍÎÏÐÒÓÔÕØÙÚÛÝßãðõøýþÿ
注:スペースとアポストロフィがこのホワイトリストに含まれる必要がある
ホワイトリストは、次のようになります。
通常、これは静的メソッドですが、拡張メソッドに変換されます。
private bool ContainsAllWhitelistedCharacters(string input)
{
string regExPattern="";// the whitelist
return Regex.IsMatch(input, regExPattern);
}
考慮事項:すべての回答者に、パフォーマンス・コメントの
感謝。パフォーマンスは問題ではありません。品質、可読性、および保守性は!少ないコード=不具合の可能性が低い、IMO。
質問:
このホワイトリストの正規表現パターンは何をすべきですか?
そのような 'string'の拡張メソッドを作成した場合、すべての文字列に含まれているものと含まれていないもののホワイトリストの対象となりますが、そうではありません。 –
@ 28:コメントいただきありがとうございます。私はこのメソッドがすべての 'string'メンバーに利用可能であることを理解しています。ユーティリティメソッドとしての実装と同じように、拡張メソッドを賢明に呼び出すことは開発者次第です。 –
@pcampbell:コンストラクタでチェックインした不正な文字を含まないことがわかっている文字列を保持する不変構造体を作成する必要があります。そうすれば、 'Path'クラスと違って、悪い文字のO(n)チェックを行うことなく文字列を操作することができます。 –