-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 のサイズが文字列 Split の結果と一致しないことを心配する必要はありません。

于 2014-02-20T16:21:59.913 に答える