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

时间:2015-06-05 14:43:23

标签: c# asp.net regex asp.net-mvc-4 c#-4.0

我有一个使用帖子评论的应用程序。安全不是问题。 string url = http://example.com/xyz/xyz.html?userid=xyz&comment=Comment

我想要的是从上面的字符串中提取用户标识和评论。 我尝试过发现我可以使用IndexOfSubstring来获取所需的代码但是如果用户标识或注释也有=符号和&符号然后我的IndexOf将返回号码,我的Substring将会出错。 你能找到一个更合适的方法来提取用户ID和评论。 感谢。

2 个答案:

答案 0 :(得分:5)

  

我使用字符串url =获取了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);

答案 1 :(得分:0)

最丑陋的方式如下:

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版本更好