【问题标题】:How to substring from a link at specific character?如何从特定字符的链接中提取子字符串?
【发布时间】:2013-11-22 20:33:03
【问题描述】:

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

我的浏览器链接

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); 

错误说:

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

那么,有什么问题呢?!

【问题讨论】:

  • num2 是要占用多少个字符。不是最后一个索引。

标签: c# asp.net .net visual-studio visual-studio-2013


【解决方案1】:

如果你只是想隔离参数:

string ID = uri.Substring(num1);

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

【讨论】:

  • ... 或num1+1 假设他不想要=,并且假设永远不会有另一个参数...并且还假设总会有至少一个参数.
【解决方案2】:

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

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

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

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

String.Substring Method (Int32, Int32)

你最好的选择是

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

【讨论】:

    【解决方案3】:

    子字符串并不是你想要做的事情的方法......这是获取查询字符串参数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    
    }
    

    【讨论】:

    • 非常感谢.. 最佳答案
    • @F505,同意。这就是为什么我赞成这个答案(它比我的好),也许你应该在将其标记为你的答案之前做同样的事情?
    【解决方案4】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2012-12-06
      • 1970-01-01
      • 2023-03-24
      • 2022-08-10
      • 2011-11-17
      相关资源
      最近更新 更多