構文的に正しいパスをテストする
-
08-07-2019 - |
質問
.NETには、文字列が構文的に正しいパスであるかどうかをテストする関数がありますか?特に、パスが実際に存在するかどうかをテストしたくありません。
これに関する私の現在の見解は正規表現です:
([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*
一致:
c:\
bbbb
\\bob/john\
..\..\
拒否:
xy:
c:\\bob
解決
パスが存在するかどうかをテストしたくないので、これには正規表現を使用することをお勧めします。
RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)<*>quot;
これをSystem.IO.Path.GetInvalidPathChars()メソッドと組み合わせて、正規表現ですべての無効な文字を動的に除外することができます。
他のヒント
System.IO.Path.GetFullPath(path)は、構文的に正しいパスでない場合、存在するかどうかを確認せずに例外をスローすると考えています。
System.IO.PathとGetInvalidPathChars()関数を使用できる可能性がありますか?
所属していません StackOverflow