关于 c#:如何从特定字符的链接中提取子字符串?

How to substring from a link at specific character?

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

我的浏览器链接

1
http://localhost:49496/Activated.aspx?id=2

代码是

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

            string ID = uri.Substring(num1,num2);

错误提示:

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

enter


如果你只是想隔离参数:

1
string ID = uri.Substring(num1);

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


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

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

另一种方法是不包含第二个参数。在这种情况下,从您提供的索引中获取子字符串,直到字符串结尾。

在这里,阅读有关该方法的 MSDN 文档,您会发现哪里出错了

String.Substring 方法 (Int32, Int32)

你最好的选择是

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

子字符串不是执行您正在尝试执行的操作的方法...这是获取查询字符串参数 id.

的值

你得到一个查询字符串参数,如:

1
string id = Request.QueryString["id"];

如果你的 id 实际上是一个 int,你可以这样做:

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


Uri 已经提供了搜索方法,不需要自己做:

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

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