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);
}
Пример:
string str = "The brown brown fox jumps over the lazy dog";
str = ReplaceFirst(str, "brown", "quick");
EDIT : Как @itsmatt упомянул , есть также Regex.Replace (String, String, Int32), который может делать то же самое, но, вероятно, более дорогой во время выполнения, так как он использует полнофункциональный синтаксический анализатор, в котором мой метод выполняет поиск и три объединения строк.
EDIT2 : Если это обычная задача, вы можете сделать метод методом расширения:
public static class StringExtension
{
public static string ReplaceFirst(this string text, string search, string replace)
{
// ...same as above...
}
}
Используя приведенный выше пример, можно написать:
str = str.ReplaceFirst("brown", "quick");