Заменить первое вхождение шаблона в строке [дубликат]


Возможные Дубликаты:
как мне заменить первый экземпляр строки в .NET?

Допустим у меня есть строка:

string s = "Hello world.";

как я могу заменить первое o в слове Hello, например,Foo?

другими словами Я хочу закончить с:

"HellFoo world."

Я знаю, как заменить все o, но я хочу заменить только первый

3 106

3 ответа:

Я думаю, что вы можете использовать перегрузку регулярное выражение.Заменить указать максимальное количество раз на замену...

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);
}

вот метод расширения, который также может работать в 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);
    }
}

есть несколько способов, которыми вы можете это сделать, но самым быстрым может быть использование IndexOf для поиска позиции индекса буквы, которую вы хотите заменить, а затем подстроки из текста до и после того, что вы хотите заменить.