我在.net中有一个字符串,它实际上是一个url。我想用一种简单的方法从一个特定的参数中获取值。
通常,我只会使用 Request.Params["theThingIWant"]
,但此字符串不是来自请求。我可以创建一个新的 Uri
这样的项目:
Uri myUri = new Uri(TheStringUrlIWantMyValueFrom);
我可以用 myUri.Query
为了得到查询字符串…但显然我必须找到一些正则表达式来拆分它。
我是否遗漏了一些明显的东西,或者除了创建某种正则表达式之外,没有内置的方法来完成这一任务,等等?
15条答案
按热度按时间hi3rlvi21#
看起来您应该在
myUri.Query
然后从那里解析它。但是,如果不在一堆格式错误的URL上测试它,我就不会使用这段代码。它可能会破坏以下部分/全部:
hello.html?
hello.html?valuelesskey
hello.html?key=value=hihello.html?hi=value?&b=c
等uhry853o2#
@安德鲁和福克斯
我也有同样的错误,发现原因是参数1实际上是:
http://www.example.com?param1
而不是param1
这正是人们所期望的。通过删除前面的所有字符并包括问号,可以解决此问题。所以本质上
HttpUtility.ParseQueryString
函数只需要一个有效的查询字符串参数,该参数仅包含问号后的字符,如中所示:我的解决方法:
fzwojiic3#
您也可以使用以下变通方法来处理第一个参数:
mw3dktmi4#
使用.net reflector查看
FillFromString
方法System.Web.HttpValueCollection
. 这将为您提供asp.net用于填充Request.QueryString
收集a1o7rhls5#
或者,如果您不知道url(为了避免硬编码,请使用
AbsoluteUri
例子。。。0kjbasz66#
您可以使用uri获取查询字符串列表或查找特定参数。
您可以在这里找到更多信息:https://docs.microsoft.com/en-us/dotnet/api/system.uri?view=net-5.0
mf98qq947#
如果您想在默认页面上获取查询字符串。默认页面表示您当前的页面url。您可以尝试以下代码:
8fsztsew8#
这其实很简单,对我来说很有效:)
lh80um4z9#
对于希望循环遍历字符串中所有查询字符串的任何人
ylamdve610#
单线linq解决方案:
3zwjbxry11#
pes8fvy912#
我用了它,它运行得很好
zfycwa2u13#
使用静态
ParseQueryString
方法System.Web.HttpUtility
返回的类NameValueCollection
.查看以下位置的文档:http://msdn.microsoft.com/en-us/library/ms150046.aspx
txu3uszq14#
这可能是你想要的
ffscu2ro15#
如果出于任何原因,您不能或不想使用
HttpUtility.ParseQueryString()
.这是为了在某种程度上容忍“格式错误”的查询字符串,即。
http://test/test.html?empty=
成为具有空值的参数。如果需要,调用方可以验证参数。测试