C# 如何在特定字符处从链接生成子字符串?

C# 如何在特定字符处从链接生成子字符串?,c#,asp.net,.net,visual-studio,visual-studio-2013,C#,Asp.net,.net,Visual Studio,Visual Studio 2013,我不知道有什么问题?我试图解决它,但没有得到任何结果 我的浏览器链接 http://localhost:49496/Activated.aspx?id=2 代码是 string uri = HttpContext.Current.Request.Url.AbsoluteUri; int num1 = uri.IndexOf('='); int num2=uri.Length-1; string ID = uri.Subs

我不知道有什么问题?我试图解决它,但没有得到任何结果

我的浏览器链接

http://localhost:49496/Activated.aspx?id=2
代码是

string uri = HttpContext.Current.Request.Url.AbsoluteUri;
            int num1 = uri.IndexOf('=');
            int num2=uri.Length-1;

            string ID = uri.Substring(num1,num2); 
错误显示:

索引和长度必须引用字符串中的位置。 参数名称:长度


那么,这是怎么回事

如果您只是尝试隔离参数:

string ID = uri.Substring(num1);

David Pilkington对其失败原因的解释是正确的。

问题在于,第二个参数是您正在查找的子字符串的长度,并且num2太大,操作无法运行

将第二个参数更改为uri.Length-num1

另一种选择是不包括第二个参数。在本例中,从您提供的索引中获取子字符串,直到字符串结束

在这里,通读有关该方法的MSDN文档,您将看到哪里出了问题

你最好的选择是

uri.Substring(uri.IndexOf('=')+1);

Uri已经提供了用于搜索的方法,无需自己进行搜索:

Uri uri = new Uri("http://localhost:49496/Activated.aspx?id=2");
Console.WriteLine(uri.Query.Split('=')[1]);

请注意,在实际的生产代码中,您可能希望包括一些错误检查,以验证查询部分是否包含id。

子字符串不是执行您试图执行的操作的方式。。。获取查询字符串参数id的值

您将获得如下查询字符串参数:

string id = Request.QueryString["id"];
如果您的id实际上是int,您可以执行以下操作:

int realId = 0;
string id = Request.QueryString["id"];
if (Int32.TryParse(id, out realId))
{
    //do something with realId    
}

num2是需要的字符数。不是最后一个索引。。。。或者num1+1,假设他不想要=,也假设永远不会有另一个参数。。。并且假设始终至少有一个参数。非常感谢。。最佳答案@F505,同意。这就是为什么我对这个答案投了更高的票——它比我的好,也许你应该在把它标记为你的答案之前做同样的事?