Мы пытаемся прочитать каждое слово из текстового файла и заменить его другим словом. Для небольших текстовых файлов он работает хорошо. Но для больших текстовых файлов, которые мы постоянно получаю исключение: «Строка не может быть нулевой длины имени параметра:. 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();
}
мы не можем найти причину. Спасибо заранее.
Вы можете получать пустую строку при разделении пробелом. Убедитесь, что у вас нет места, где есть два последовательных пробега. – Tudor
В будущем, пожалуйста, укажите трассировку стека исключения и, если возможно, укажите строку, в которой возникает исключение. Это обычно определяет источник проблемы быстро, вместо того, чтобы заставить людей анализировать вашу программу, чтобы понять ее. –