在.NET中是否有一个函数可以测试字符串在语法上是否是正确的路径?我特别不希望它测试路径是否确实存在。

我目前对此的看法是一个正则表达式:

([a-zA-Z]:|\\)?\\?([^/\\:*?"<>|]+[/\\])*[^/\\:*?"<>|]*

匹配:

c:\
bbbb
\\bob/john\
..\..\

拒绝:

xy:
c:\\bob
有帮助吗?

解决方案

我建议只使用正则表达式,因为你特别不想测试路径是否存在。

这是谷歌帮我挖掘的事情:

RegEx="^([a-zA-Z]\:|\\\\[^\/\\:*?"<>|]+\\[^\/\\:*?"<>|]+)(\\[^\/\\:*?"<>|]+)+(\.[^\/\\:*?"<>|]+)$"

您可以将它与System.IO.Path.GetInvalidPathChars()方法结合使用,并使正则表达式动态排除所有无效字符。

其他提示

我相信System.IO.Path.GetFullPath(path)如果不是语法正确的路径而不检查它是否存在,则会抛出异常。

您可以使用System.IO.Path和GetInvalidPathChars()函数吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top