【问题标题】:C# Index and length must refer to location within stringC# 索引和长度必须引用字符串中的位置
【发布时间】:2012-10-09 05:01:20
【问题描述】:

在下面运行时显示程序错误 **

未处理的异常:systemArgumentOutofRange:Index 和 length 必须 引用字符串中的位置。

**

string input = "OneTwoThree sdfhguiosdrb asdhfuiaserthf aseiryaseuigraweui";           

int size = input.Length;
if (input.Length > 30)
{
    msg1 = input.Substring(0, 30);
    msg2 = input.Substring(msg1.Length, size);
    Console.WriteLine("Message: {0}", msg1);
    Console.WriteLine("\nMessage: {0}", msg2);
}
else
    Console.WriteLine(input);

请帮助我做错了什么。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    你在这条线上做错了

    msg2 = input.Substring(msg1.Length, size);
    

    您在这里所做的是,创建一个比您的第一个字符串 msg1 更长的子字符串 msg2

    在这里,您的msg1.Length 等于30 并且您的size 等于58 意味着您正在尝试创建一个具有startingIndex = 30Length = 58 的字符串,在这种情况下这是不可能的,因为第二个字符串msg1 的长度为30,小于Size i.e. 58

    Albin Sunnanbo 的答案符合您的要求。即

    msg2 = input.Substring(msg1.Length, size - msg1.Length);
    

    【讨论】:

      【解决方案2】:

      改变

      msg2 = input.Substring(msg1.Length, size);
      

      msg2 = input.Substring(msg1.Length, size - msg1.Length);
      

      【讨论】:

        【解决方案3】:
        msg2 = input.Substring(msg1.Length)
        

        【讨论】:

          【解决方案4】:

          你可以改变你的单行 msg2 = input.Substring(msg1.Length, size);

          msg2 = input.Substring(0, size);
          msg2 = msg2.Remove(0, msg1.Length);
          

          问题将得到解决。

          string input = "OneTwoThree sdfhguiosdrb asdhfuiaserthf aseiryaseuigraweui";
                  int size = input.Length;
                  if (input.Length > 30)
                  {
                      string msg1;
                      string msg2;
                      msg1 = input.Substring(0, 30);
                      **msg2 = input.Substring(0, size);**
                      **msg2 = msg2.Remove(0, msg1.Length);**
                      Console.WriteLine("Message: {0}", msg1);
                      Console.WriteLine("\nMessage: {0}", msg2);
                  }
                  else
                      Console.WriteLine(input);
          

          【讨论】:

            猜你喜欢
            • 2016-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-06-24
            • 2021-08-24
            • 1970-01-01
            相关资源
            最近更新 更多