【问题标题】:Test for a syntactically correct path测试语法正确的路径
【发布时间】:2010-09-23 08:37:21
【问题描述】:

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

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

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

匹配:

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

拒绝:

xy:
c:\\bob

【问题讨论】:

    标签: .net filepath string-matching


    【解决方案1】:

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

    【讨论】:

    • 如果可行,很好,但失败案例对我来说和通过案例一样有效,我宁愿不抛出/捕获。
    • 是的,可能是需要的。这里是msdn:msdn.microsoft.com/en-us/library/…来自文章,“但是,如果路径确实存在,调用者必须有权限才能获取路径的路径信息。”可以根据情况扔扳手。
    【解决方案2】:

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

    这是google helped me dig up

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

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

    【讨论】:

    • WT.. 是为了逃跑吗?我无法确定它的正面或反面。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-10
      • 2010-11-19
      • 1970-01-01
      • 2011-12-19
      • 2016-12-04
      • 1970-01-01
      • 2013-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多