質問

.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()関数を使用できる可能性がありますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top