【问题标题】:Get value from URL via RegEx通过 RegEx 从 URL 获取值
【发布时间】:2011-09-03 07:34:40
【问题描述】:

【问题讨论】:

  • @Tim: 是的,gradename总是在同一个位置,域名并不总是一样。
  • Decker97 的回答应该可以为您解决问题。
  • 你在使用 Asp.Net MVC 吗?如果是,您可以安全地在控制器中获取参数(“路由”)。这个问题的每个答案看起来都不太好。你不应该把你的 URL 当作一个简单的字符串来操作
  • @Tim 不安全 - url 是代码中 Action 的路径。您定义了路线并定义了所有可能的参数。然后你就可以用正确的方法安全地得到它了
  • @JohnJohnGa - 我认为他没有使用 MVC - 它被标记为 ASP.NET(MVC 有一个单独的标签)。只要他出于某种原因没有操纵实际的 URL,我就不会看到使用字符串(与 URL 不同)或使用 Url.Segments(这是一个只读属性)的问题。

标签: c# asp.net regex


【解决方案1】:

如果您正在寻找服务器端/ASP.NET 解决方案,可以使用 Url 的 Segments 集合,例如:

var gradeName = Request.Url.Segments[2].Trim('/');

Segments 是主机名后面的 URL 部分的数组,例如:

[ "/", "questions/", "gradename/", ... ]

【讨论】:

  • 主机名和 / 被剥离,所以你的第一个例子是正确的。不过,我不太确定你的第二个是不是。
  • 谢谢@Tim,这是一个错字。
  • @Tim: Request.Url.Segments[3].Trim('/') 第 3 个位置将返回 gradname 而不是第 2 个。
【解决方案2】:

正则表达式是预优化。只需在 / 上拆分字符串并取第四个值。

【讨论】:

  • +1 - 当明显的事物盯着我的脸而我忽略它时,我讨厌它。我在考虑字符串函数,但想出了各种奇怪的方法来做到这一点。 :)
  • 顺便说一句 - 最好说数组的第 4 个元素,因为在 / 上拆分 URL 将产生至少 5 个值,其中第 4 个元素是等级名称。
猜你喜欢
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2017-01-03
相关资源
最近更新 更多