【问题标题】:Best way to check if an absolute uri contains a given relative uri检查绝对uri是否包含给定相对uri的最佳方法
【发布时间】:2019-01-15 20:26:36
【问题描述】:

有没有一种简单的方法来测试相对 uri 是否恰好存在于给定的绝对 uri 中?

例如,这将返回 true:

绝对uri:http://www.google.com/path1/path2/blah.html

RelativeUri: ./path2/blah.html

我能想到的唯一方法是直接使用字符串操作,但想知道是否有使用 Uri 类的直接方法。

【问题讨论】:

  • 为什么要这样做?您是否担心查询字符串中值的不同编码(例如,+ 和 %20 是否应该匹配)?
  • 测试 httpresponse 是否返回我打算返回的 uri。

标签: c# uri


【解决方案1】:

查看文档后我不这么认为,即使是 URI.Compare() 方法也需要开销才能找到正确的索引,这使得它比 String.Contains() 花费更多: https://docs.microsoft.com/en-us/dotnet/api/system.uri.compare?view=netframework-4.7.2

看起来

string relURI = @"./path2/blah.html";
bool containsURI = myUri.AbsolutePath.Contains(relURI);

可能是您最好的选择(正如您所暗示的那样)。

【讨论】:

  • 这种方法唯一的问题是它不完整。例如,在 rel uri 在句点之前的情况下,它将始终返回 false,因为绝对 uri 中不应该有句点。很容易解决,但我不确定是否还有其他警告
猜你喜欢
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 2013-04-22
  • 1970-01-01
相关资源
最近更新 更多