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