ユーザーが入力した文字列がフォルダへのパスを表すのに有効かどうかを判断しようとしています。有効とは、適切にフォーマットされていることを意味します。
私のアプリケーションでは、フォルダーはインストール先を表します。フォルダパスが有効であれば、フォルダが存在するかどうかを確認し、存在しない場合は作成します。
現在使用していIO.Directory.Exists( String path )
ます。ユーザーが文字列を適切にフォーマットしない場合を除いて、これは正常に機能することがわかりました。その場合、このメソッドはfalseを返します。これは、フォルダーが存在しないことを示します。しかし、後でフォルダを作成できなくなるため、これは問題です。
グーグルから、正規表現を使用して形式が適切かどうかを確認するという提案を見つけました。私は正規表現の経験がなく、それが実行可能なアプローチであるかどうか疑問に思っています。これが私が見つけたものです:
Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );
と組み合わせた正規表現テストは、パスが有効かどうか、およびパスが存在するかどうかを確認するのに十分な方法をDirectory.Exists()
教えてくれますか?これはOSやその他の要因によって異なることはわかっていますが、このプログラムはWindowsユーザーのみを対象としています。