很简单的问题。但仍然无法解决。
我将消息传递给数组
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 {}
}
答案 0 :(得分:1)
(编辑为问题中添加了更多代码):
尝试替换它:
string[] arr1 = new string[11];
arr1 = messageIn.Split(' ');
以下内容:
string[] arr1 = messageIn.Split(new char[]{' '});
这可能导致数组长于11,但这并不重要 - 在此处填充数组之前,不需要指定长度。
答案 1 :(得分:1)
我认为你把它与字符数组混淆了。 在你的情况下,我只会这样做:
arr1[0] = "feet nimantha 1 2 3 4 5 6 7 8 120827";
如果那不是你想要的,请看Kjartan。 Sry,我写的是错的,代码是在我写完之后写的。 :(
答案 2 :(得分:0)
如果您需要的结果是
arrmsg = "feet/nimantha/1/2/3/4/5/6/7/8/120827"
并且你有异常,因为你的字符串数组arr1具有不匹配的长度,其结果是字符串Split with whitespace 然后你可以声明并分配你的字符串数组来存储字符串Split result
//string[] arr1 = new string[11];
string[] arr1 = messageIn.Split(' ');
然后arr1可以根据字符串Split结果具有不同的数组大小。例如,
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的结果不匹配。