我們有一個數據表「ST」有兩列「字」,「二進制」獲得「索引數組的範圍之外」異常
void replace()
{
string s1="", s2="";
StreamReader streamReader;
streamReader = File.OpenText("C:\\text.txt");
StreamWriter streamWriter = File.CreateText("C:\\sample1.txt");
int x = st.Rows.Count;
// int i1 = 0;
// Now, read the entire file into a string
while ((line = streamReader.ReadLine()) != null)
{
for (int i = 0; i < x; i++)
{
s1 = Convert.ToString(st.Rows[i]["Word"]);
s2 = Convert.ToString(st.Rows[i]["Binary"]);
s2+="000";
char[] delimiterChars = { ' ', '\t' };
String[] words = line.Split(delimiterChars);
// Write the modification into the same file
String ab = words[i]; //exception occurs here
// Console.WriteLine(ab);
streamWriter.Write(ab.Replace(s1,s2));
}
}
streamReader.Close();
streamWriter.Close();
}
我們得到的一個「索引範圍之外的數組「異常。我們無法找到問題。在此先感謝
編輯: tnx給每個人誰幫助。 我這樣做,它以某種方式工作:再次
void replace()
{
string s1 = "", s2 = "";
StreamReader streamReader;
streamReader = File.OpenText("C:\\sample1.txt");
StreamWriter streamWriter = File.CreateText("C:\\sample1.txt");
int x = st.Rows.Count;
while ((line = streamReader.ReadLine()) != null)
{
char[] delimiterChars = { ' ', '\t' };
String[] words = line.Split(delimiterChars);
foreach (string str in words)
{
s1 = str;
DataRow drow = st.Rows.Find(str);
if (drow != null)
{
index = st.Rows.IndexOf(drow);
s2 = Convert.ToString(st.Rows[index]["Binary"]);
// s2 += "000";
// ab = words[i];
Console.WriteLine(s1);
Console.WriteLine(s2);
streamWriter.Write(str.Replace(s1, s2));
}
else
break;
}
}
streamReader.Close();
streamWriter.Close();
}
TNX給大家。 問候, sagar
那麼我該如何避免它? PLZ幫助 – 2012-02-02 17:24:21
@vidya如果我理解您的示例中的應用程序,您正在查找要替換爲字符串的單詞,然後將修改的字符串放回到文件中。首先,我會提升內部循環之外的所有步驟,分割字符串,而分隔符可以在for循環之外完成。然後在for循環中,您實際上需要查看拆分字符串中的每個單詞以進行替換。這樣做的一種方法是添加一個迭代每個拆分詞的for循環。一個更容易和更直接的方法是使用列表和擴展方法 –
GrayWizardx
2012-02-02 17:56:09
我會嘗試列表。謝謝你的幫助 –
2012-02-02 18:11:06