我遇到了这段代码,它应该确定动态(重写)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