假设我有一个绝对的url /testserver/tools/search.aspx,我将其存储在一个变量url中。
我想检查是否url == /tools/search.aspx而不必使用/ testserver。
更完整的例子是:
我的测试服务器包含网址http://www.testserver.com/tools/Search.aspx,
但我的实时服务器包含网址http://www.liveserver.com/tools/Search.aspx
如果我将存储testserver url的变量url与liveserver url进行比较,它将会失败,这就是为什么我只想检查/tools/Search.aspx部分。
答案 0 :(得分:3)
如果您的输入格式为"http://www.testserver.com/tools/Search.aspx"
:
var path1 = new Uri("http://www.testserver.com/tools/Search.aspx").AbsolutePath;
var path2 = new Uri("http://www.liveserver.com/tools/Search.aspx").AbsolutePath;
两者都会产生"/tools/Search.aspx"
。
如果您必须接受任何URI,即使用包含查询字符串,片段标识符等的URI,则使用Uri
是最佳解决方案。
如果您输入的格式为“/testserver.com/tools/Search.aspx”和,则表示所有输入始终为此格式且有效且不包含其他URI组件:
var input = "/testserver.com/tools/Search.aspx";
var path1 = input.Substring(input.Index('/', 1));
结果为"/tools/Search.aspx"
。
答案 1 :(得分:2)
if (url.ToLower().Contains("/tools/search.aspx"))
{
//do stuff here
}
如果您有查询字符串,我会使用Contains,但如果您没有查询字符串,也可以使用EndsWith(“/ tools / search.aspx”)。
答案 2 :(得分:1)
Regex.Match(url, @"^.*?/tools/search\.aspx\??.*",
RegexOptions.IgnoreCase).Success == true
如果您从Request.PathInfo获取网址,则无论如何都不会拥有该网址...但您的问题不明确,因为您说您的路径/ testserver /在一个路径中,但在您提供的网址中没有。
否则,请从Request.Url.ToString()
设置url答案 3 :(得分:0)
您可以使用属性AppRelativeCurrentExecutionFilePath
,它将为您提供相对应用程序根目录的路径。因此"http://host/virtualfolder/page.aspx"
将是"~/page.aspx"
:
if (HttpContext.Current.Request.AppRelativeCurrentExecutionFilePath.Equals("~/search.aspx", StringComparison.InvariantCultureIgnoreCase))
{
// do something
}
答案 4 :(得分:0)
如果唯一的区别是URL的主机部分,我会使用System.Uri类来比较他们的绝对路径(“tools / Search.aspx”部分uri)。
以下是如何操作的示例:
static void Main(string[] args)
{
//load up the uris
Uri uri = new Uri("http://www.testserver.com/tools/search.aspx");
Uri matchingUri = new Uri("http://www.liveserver.com/tools/search.aspx");
Uri nonMatchingUri = new Uri("http://www.liveserver.com/tools/cart.aspx");
//demonstrate what happens when the uris match
if (uri.AbsolutePath == matchingUri.AbsolutePath)
Console.WriteLine("These match");
//demonstrate what happens when the uris don't match
if (uri.AbsolutePath != nonMatchingUri.AbsolutePath)
Console.WriteLine("These do not match");
}