Die Meldung "der Index war außerhalb der Begrenzungen des Arrays" Ausnahme
haben wir eine datatable "st" mit zwei Spalten "Wort" und "binary"
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();
}
bekommen wir ein "Index war außerhalb der Begrenzungen des Arrays" Ausnahme. wir sind nicht in der Lage, das problem zu finden. vielen Dank im Voraus
BEARBEITEN:
tnx an alle, die geholfen haben.
ich Tat dies und es funktionierte irgendwie:
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 an alle mal wieder.
Grüße,
sagar
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie haben eine hypothetische Linie "a b c d e" zum Beispiel die erste Zeile in Ihrer Datei, und Sie Ihre Datenbank "st" 10 Zeilen enthält, würden Sie die Schleife durch den Prozess, der 10 mal auf der 6. Zeit würden Sie den Fehler Auftritt. Den Schritt 6. würde der split den string in: {a, b, c, d, e} und versuchen dann, die 5. index (null-basiert), die außerhalb des Arrays.
So, wie Sie sind stützen aus i ist die Anzahl der Zeilen zählen aka X und nicht die Länge der string-array. Daher haben Sie vielleicht 100 Zeilen, aber der string ist in split nur 5 string-Werte.
i
ist der index der Zeile, die Sie sind auf.words
enthält ein array der Wörter auf die Linie.Wenn es weniger Worte in der Zeile als die line index... erhalten Sie eine out of bounds exception.
Benötigen Sie einen gültigen index-Wert für die Anzahl der Wörter in der Zeile - es ist nicht klar, was genau Sie versuchen zu erreichen in Ihrem code, so kann ich nicht ein Beispiel geben.
Verwenden Sie den debugger, um zu schauen, was
line
und in derwords
array und vergleichen Sie mit dem Werti
. Der debugger ist dein bester Freund.