Reemplazar la primera aparición del patrón en una cadena

Posible duplicado:
¿Cómo reemplazo la primera instancia de una cadena en .NET?

Digamos que tengo la cadena:

string s = "Hello world."; 

¿Cómo puedo reemplazar la primera o en la palabra Hello , digamos Foo ?

En otras palabras, quiero terminar con:

 "HellFoo world." 

Sé cómo reemplazar todas las o pero quiero reemplazar solo la primera

Creo que puede usar la sobrecarga de Regex.Replace para especificar el número máximo de veces para reemplazar …

 var regex = new Regex(Regex.Escape("o")); var newText = regex.Replace("Hello World", "Foo", 1); 
 public string ReplaceFirst(string text, string search, string replace) { int pos = text.IndexOf(search); if (pos < 0) { return text; } return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); } 

aquí hay un Método de Extensión que también podría funcionar por solicitud de VoidKing

 public static class StringExtensionMethods { public static string ReplaceFirst(this string text, string search, string replace) { int pos = text.IndexOf(search); if (pos < 0) { return text; } return text.Substring(0, pos) + replace + text.Substring(pos + search.Length); } } 

Hay varias maneras de hacerlo, pero lo más rápido podría ser utilizar IndexOf para encontrar la posición del índice de la letra que desea reemplazar y luego subsergir el texto antes y después de lo que desea reemplazar.