如何从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 和评论。
我尝试并发现我可以使用IndexOf
和Substring
来获得所需的代码但是如果用户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获取子字符串或字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章