yet another string/substring topic:
I'm trying to write a function that looks for the substrings "id" and "imagePath" in a string that's generated from a very long text file. The characters between the 2 substrings should be written in a rich text box. I cannot see what I'm doing wrong, but the loop never ends and always prints only the first occurrence of said characters, resulting in a million lines that are identical being shown in the text box. There are at least 10 occurrences of both substrings in my file, and my code is below:
private void textToFind ( string file, string catalogType)
{
richTextBox1.Clear();
catalogType.ToUpper();
string contentOfFile = File.ReadAllText(file);
contentOfFile.TrimEnd();
int startPosition, endPosition;
while (contentOfFile.Length > 20)
{
startPosition = contentOfFile.IndexOf("id");
endPosition = contentOfFile.IndexOf("imagePath");
if (startPosition >= 0 && endPosition > startPosition)
{
startPosition = startPosition + 4;
endPosition = endPosition -3;
string dataToExtract = contentOfFile.Substring(startPosition, endPosition);
richTextBox1.AppendText(dataToExtract + "\r\n");
contentOfFile.Remove(startPosition-4, endPosition+12);
}
else
{
richTextBox1.AppendText("fail " + catalogType + "\r\n");
contentOfFile.Remove(contentOfFile.Length/2);
}
}
return;
}
Can anyone please share why this is not working as intended?? I think contentOfFile.Remove is not working and the main string doesn't get trimmed, but I don't understand why.
Many thanks!
Removeclearly states, "Returns a new string in which a specified number of characters from the current string are deleted." The fact that it returns astringrather thanvoidshould also be an indication that you need to do something with it.