如何从c#中的url获取子字符串或字符串的一部分

Posted

技术标签:

【中文标题】如何从c#中的url获取子字符串或字符串的一部分【英文标题】:how to get substring or part of string from a url in c# 【发布时间】:2015-08-20 13:46:08 【问题描述】:

我有一个使用 post cmets 的应用程序。安全不是问题。 字符串网址 = http://example.com/xyz/xyz.html?userid=xyz&comment=Comment

我想要的是从上面的字符串中提取用户 ID 和评论。 我尝试并发现我可以使用IndexOfSubstring 来获得所需的代码但是如果用户ID 或评论也有= 符号和& 符号那么我的IndexOf 将返回数字而我的Substring 将是错误的. 你能帮我找到一种更合适的提取用户名和评论的方法吗? 谢谢。

【问题讨论】:

没有。我相信您可以从 Response 对象中获取它们作为查询字符串值。 Get url parameters from a string in .NET的可能重复 【参考方案1】:

我使用字符串 url = HttpContext.Current.Request.Url.AbsoluteUri;

不要使用AbsoluteUri 属性,它会给你一个string Uri,而是直接使用Url 属性,例如:

var result = System.Web.HttpUtility.ParseQueryString(HttpContext.Current.Request.Url.Query);

然后你可以像这样提取每个参数:

Console.WriteLine(result["userid"]);
Console.WriteLine(result["comment"]);

对于其他情况,如果您有 string uri,则不要使用字符串操作,而是使用 Uri 类。

Uri uri = new Uri(@"http://example.com/xyz/xyz.html?userid=xyz&comment=Comment");

您也可以使用TryCreate 方法,该方法在 Uri 无效的情况下不会引发异常。

Uri uri;
if (!Uri.TryCreate(@"http://example.com/xyz/xyz.html?userid=xyz&comment=Comment", UriKind.RelativeOrAbsolute, out uri))

    //Invalid Uri

然后可以使用System.Web.HttpUtility.ParseQueryString获取查询字符串参数:

 var result = System.Web.HttpUtility.ParseQueryString(uri.Query);

【讨论】:

我是新手,请您建议我如何在使用 uri 后从上述链接中提取 xyz 和评论 我使用字符串 url = HttpContext.Current.Request.Url.AbsoluteUri;现在我做 Uri uri = new Uri(@url); var 结果 = System.Web.HttpUtility.ParseQueryString(uri.Query); 请记住,IndexOf 总是在您需要时出现。 @Asbat,太好了,不要用AbsoluteUri,而是直接用Url,不用转成字符串。 @Asbat,我已经修改了答案【参考方案2】:

最丑的方式如下:

String url = "http://example.com/xyz/xyz.html?userid=xyz&comment=Comment";
usr = url.Split('?')[1];
usr= usr.Split('&')[0];
usr = usr.Split('=')[1];

但@habib 版本更好

【讨论】:

但正如我的问题所说,如果用户 id 或评论包含 ? & = 那将是一个无效的网址

以上是关于如何从c#中的url获取子字符串或字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中搜索字符串数组中的子字符串

如何从python中的文本文件中获取子字符串?

从动态数据c#中获取子字符串

java 从一个URL中提取特定子字符串保存

python,如何获取字符串中的子字符串,部分字符串

如何从 C# 中的相对 URL 字符串中获取参数?