【发布时间】:2012-02-26 19:44:42
【问题描述】:
我们正在尝试从文本文件中读取每个单词并将其替换为另一个单词。 对于较小的文本文件,它运行良好。但是对于较大的文本文件,我们不断收到异常:“字符串长度不能为零。 参数名称:oldValue"
void replace()
{
string s1 = " ", s2 = " ";
StreamReader streamReader;
streamReader = File.OpenText("C:\\sample.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";
// Console.WriteLine(s1);
// Console.WriteLine(s2);
streamWriter.Write(s1.Replace(s1,s2)); // Exception occurs here
}
else
break;
}
}
streamReader.Close();
streamWriter.Close();
}
我们无法找到原因。 提前致谢。
【问题讨论】:
-
按空格分割时可能会得到一个空字符串。检查你是否没有任何地方有两个连续的空格字符。
-
以后,请包含异常的堆栈跟踪,如果可能,请指出引发异常的行。这通常可以快速确定问题的根源,而不是让人们不得不分析您的程序来找出问题所在。