title: How do you perform string replacement on just a subsection of a string?
body: <p>I'd like an efficient method that would work something like this</p>
  
  <p>EDIT: Sorry I didn't put what I'd tried before. I updated the example now.</p>
  
  <pre><code>// Method signature, Only replaces first instance or how many are specified in max
  public int MyReplace(ref string source,string org, string replace, int start, int max)
  {
       int ret = 0;
       int len = replace.Length;
       int olen = org.Length;
       for(int i = 0; i &lt; max; i++)
       {
            // Find the next instance of the search string
            int x = source.IndexOf(org, ret + olen);
            if(x &gt; ret)
               ret = x;
            else
               break;
  
           // Insert the replacement
           source = source.Insert(x, replace);
           // And remove the original
           source = source.Remove(x + len, olen); // removes original string
       }
       return ret;
  }
  
  string source = "The cat can fly but only if he is the cat in the hat";
  int i = MyReplace(ref source,"cat", "giraffe", 8, 1); 
  
  // Results in the string "The cat can fly but only if he is the giraffe in the hat"
  // i contains the index of the first letter of "giraffe" in the new string
  </code></pre>
  
  <p>The only reason I'm asking is because my implementation I'd imagine getting slow with 1,000s of replaces.</p>