-9

非常简单的问题。但仍然无法解决。

我将消息传递给数组

feet nimantha 1 2 3 4 5 6 7 8 120827

我已经像这样声明了数组,

string[] arr1 = new string[10];

在那之后,我尝试了

string[] arr1 = new string[11];

但两者都向我展示了这个例外 -Index was outside the bounds of the array

代码在这里。

protected void Page_Load(object sender, EventArgs e) {
  try {
    string mobileNo = Request.QueryString["msisdn"];
    int  dest = int.Parse(Request.QueryString["shortcode"].ToString());
    string messageIn = Request.QueryString["msg"];
    string operatorNew = Request.QueryString["operator"];

    // Label1.Text = "ok";
    WriteToFile(mobileNo, dest, messageIn, operatorNew);
    if (messageIn != null) {
      string[] arr1 = new string[11];
      arr1 = messageIn.Split(' ');
      int size = arr1.Length;
      string arrmsg = "";
      foreach (string _element in arr1) {
        if (arrmsg == "")
          arrmsg = _element;
        else {
          arrmsg = arrmsg + "/" + _element;
        }
      }
    }
  } catch {}
}
4

3 回答 3

1

(编辑为问题添加了更多代码):

尝试替换这个:

string[] arr1 = new string[11]; 
arr1 = messageIn.Split(' ');

具有以下内容:

string[] arr1 = messageIn.Split(new char[]{' '});

这很可能会导致数组长度超过 11,但这并不重要——您无需在此处填充数组之前指定长度。

于 2012-08-28T06:31:19.790 回答
1

我认为您将其与字符数组混淆了。在你的情况下,我会简单地做:

arr1[0] = "feet nimantha 1 2 3 4 5 6 7 8 120827";

如果那不是您想要的,请查看 Kjartan。对不起,我写的不对,代码是在我写完之后出现的。:(

于 2012-08-28T06:31:21.053 回答
0

如果您需要的结果是

arrmsg = "feet/nimantha/1/2/3/4/5/6/7/8/120827"

并且您有例外,因为您的字符串数组 arr1 的长度与带有空格的字符串拆分结果不匹配,那么您可以声明并分配您的字符串数组来存储字符串拆分结果

//string[] arr1 = new string[11];
string[] arr1 = messageIn.Split(' ');

然后 arr1 可以根据字符串拆分结果具有不同的数组大小。例如,

string messageIn ="feet nimantha 1 3 4 5 6 7 8 120827";
//arr1 is string[10] here
string[] arr1 = messageIn.Split(' ');

messageIn = "feet nimantha 1 3 4 5 6 7 8 120827 2132144";
//arr1 is string[11] here
arr1 = messageIn.Split(' ');

因此您不必担心字符串数组 arr1 的大小与字符串拆分的结果不匹配。

于 2014-02-20T16:21:59.913 回答