在 .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() 函数?