代码之家  ›  专栏  ›  技术社区  ›  Alfero Chingono

正则表达式实现

  •  2
  • Alfero Chingono  · 技术社区  · 16 年前

    "/testing/parent/default.aspx"  --> "/testing/default.aspx"
    "/testing/parent.aspx"          --> "/testing/default.aspx"
    "/testing/default.aspx"         --> "/default.aspx"
    "/default.aspx"                 --> null
    

    ...

    private string GetParentUrl(string url)
    {
        string parentUrl = url;
    
        if (parentUrl.EndsWith("Default.aspx", StringComparison.OrdinalIgnoreCase))
        {
            parentUrl = parentUrl.Substring(0, parentUrl.Length - 12);
    
            if (parentUrl.EndsWith("/"))
                parentUrl = parentUrl.Substring(0, parentUrl.Length - 1);
        }
    
        int i = parentUrl.LastIndexOf("/");
    
        if (i < 2) return null;
    
        parentUrl = parentUrl.Substring(0, i + 1);
    
        return string.Format(CultureInfo.InvariantCulture, "{0}Default.aspx", parentUrl);
    }
    

    这个代码有效,但我觉得很难闻。它不适用于具有查询字符串的URL。如何使用regex改进它?

    3 回复  |  直到 16 年前
        1
  •  4
  •   Community Mohan Dere    9 年前

    看看你的答案 SO question "Getting the parent name of a URI/URL from absolute name C#"

    System.Uri 访问URL的段。 System.Uri 还允许以您想要的方式(而不是自定义逻辑)操作URL,而不会产生创建无效URL的危险。不需要破解自己的函数来解析URL。

        2
  •  1
  •   Leon    16 年前

    一种直接的方法是用“?”拆分url,并在末尾连接查询字符串。。。

        3
  •  1
  •   Roman    16 年前