'Faster way to search through a big string?

I am currently trying to make a program to find blocks of a specific color in a game save and move their position, however with some of the bigger saves my method of searching for the blocks in the save can start to take a bit. My current fastest method takes about 42 seconds to search for and move every block in a string about the size of 1MB. There are a lot of blocks in the save (Roughly one every 50-300 characters in the string, with a total of around 7k) so I'm not sure if string search algorithms would speed up or slow down this process.

So, I was wondering if I could get any tips of if anyone had any ideas on how to further speed up my code I would be very greatfull.

progressBar2.Maximum = blueprint.Length;
int i = 0;
while (i < blueprint.Length - 15)
{
   progressBar2.Value = i;
   try 
   { 
        if (!blueprint.Substring(i, 110).ToLower()
            .Contains("\"color\"")) 
        {
            i += 100; 
        } 
   } 
   catch 
   { 
      return; 
   }
   checkcolor(i, color, colortf, posset, axis);
   i++;
                
}

I am currently optimizing the method checkcolor and it's the cause for most of the delay, but my current method runs it way more than needed.

I've tried adding a second if to skip at an interval of 10 as well as 100 but that caused it to take over 2 min, I've also tried different values to skip other then 100 but 100 seems to be the fastest.

Edit: I was making 2 new temporary strings just to check for a small bit of text millions of times, it's a lot faster to use .IndexOf which I did not know existed. Thanks for the help and sorry if this was off topic.



Solution 1:[1]

I would try to compare efficiency without creation substring and using ToLower():

if (!blueprint.IndexOf("\"color\"", StringComparison.OrdinalIgnoreCase) >= 0)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 StepUp