我遇到了這段代碼,它應該確定動態(重寫)URL的層次結構中的父URL。其基本邏輯是這樣的:正則表達式實現
"/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);
}
此代碼的工作,但它的氣味給我。它不適用於具有查詢字符串的網址。我怎樣才能改進它使用正則表達式?
無論用regex重新實現你的代碼,你應該首先使用'System.Uri'解析URL來提取路徑字符串,然後處理它。不要嘗試解析整個URL,這很容易讓錯誤 - 重用現有的工作代碼! – 2009-12-04 18:03:23