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,同意。这就是为什么我对这个答案投了更高的票——它比我的好,也许你应该在把它标记为你的答案之前做同样的事?