2016-05-04 50 views
0

运行下面的代码时,我得到一个运行时异常fix:Index是数组的边界之外的范围之外:修复:索引数组的

char[] delim = { ' ' }; 
    string sContent = txtcontent.Text; 
    string sFind = txtfind.Text; 
    string sReplace = txtreplace.Text; 
    string sRecontent = txtrepalcecontent.Text; 
    //Session["find"] = sFind; 
    string[] fileLineString = new string[sContent.Length]; 
    for (int i =0 ; i < sContent.Length; i++) 

    { 
     //fileLineString[0] = sContent[0].ToString(); 
     string[] content = sContent.Split(delim); 
     if (sFind == content[i]) ////**error** 
      //if (Session["find"].ToString() == content[i]) 
     { 
      string A = sContent.Remove(i, txtfind.Text.Length); 
      string S = A.Insert(i, sReplace); 
      txtrepalcecontent.Text = S; 
     } 

回答

0

的问题是在这里:

string[] content = sContent.Split(delim); 
    if (sFind == content[i]) ////**error** 

您正在遍历一个长度为nm的数组,其中m是另一个数组的长度(较短,因为该数组是拆分的结果,所以您要删除字符并缩短长度),但仍然期望数组长度为n。这就是你得到索引越界的方式。 要修复它,只是换周期之前移动拆分并用相同的指标迭代:

char[] delim = { ' ' }; 
string sContent = txtcontent.Text; 
string sFind = txtfind.Text; 
string sReplace = txtreplace.Text; 
string sRecontent = txtrepalcecontent.Text; 
//Session["find"] = sFind; 
string[] content = sContent.Split(delim); 
string[] fileLineString = new string[content.Length]; 
for (int i =0 ; i < content.Length; i++) 
{ 
    //fileLineString[0] = sContent[0].ToString(); 

    if (sFind == content[i]) ////**error** 
     //if (Session["find"].ToString() == content[i]) 
    { 
     string A = sContent.Remove(i, txtfind.Text.Length); 
     string S = A.Insert(i, sReplace); 
     txtrepalcecontent.Text = S; 
    } 
0
string A = sContent.Remove(i, txtfind.Text.Length); 
    string S = A.Insert(i, sReplace); 
    txtrepalcecontent.Text = S; 

如何更换无需替换功能