日期:2014-05-19  浏览次数:20451 次

split的错误!!!!!
string   strWo=b.Value;
int[]   intW=new   int[5];
string[]   strW=strWo.Split( ', ');
int   intLen2=strW.Length-1;
switch(intLen2)
{
case   1:
hidden1.Value=strW[0].ToString();
break;
case   2:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
break;
case   3:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
break;
case   4:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
Hidden4.Value=strW[3].ToString();
break;
default:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
Hidden4.Value=strW[3].ToString();
Hidden5.Value=strW[4].ToString();
break;

这样一段代码,b.value是来接收所选的checkbox的值的(数量不定),其中以逗号分隔;
如果checkbox的数量为1个的时候,default下面的
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
就会出错误,什么数组超出索引。。。

checkbox的数量大于1个时候,没有错误

我想问的是,如果为1个的时候,怎么解决呢???



------解决方案--------------------
int intLen2=strW.Length-1;
不明白为什么要-1

既然你-1 那么后面的case也应该-1
所以应该是

string strWo=b.Value;
int[] intW=new int[5];
string[] strW=strWo.Split( ', ');
int intLen2=strW.Length-1;

switch(intLen2)
{
case 0:
hidden1.Value=strW[0].ToString();
break;
case 1:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
break;
case 2:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
break;
case 3:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
Hidden4.Value=strW[3].ToString();
break;
default:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
Hidden4.Value=strW[3].ToString();
Hidden5.Value=strW[4].ToString();
break;
------解决方案--------------------
int intLen2=strW.Length-1;
//如果为1个的时候,strW.Length=1那么此时int intLen2=strW.Length-1=0
//那么按照你的程序,并没有case 0,那就执行default块.你的default块中都索引都到4了,当然要出错了.
switch(intLen2)
{
case 1:
hidden1.Value=strW[0].ToString();
break;
case 2:
 ..
default:
hidden1.Value=strW[0].ToString();
hidden2.Value=strW[1].ToString();
Hidden3.Value=strW[2].ToString();
Hidden4.Value=strW[3].ToString();
Hidden5.Value=strW[4].ToString();