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

  

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

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

string s = "Hello world.";

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

Другими словами, я хочу закончить тем, что:

"HellFoo world."

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

114 голосов | спросил Tono Nam 10 Jpm1000000pmTue, 10 Jan 2012 23:29:43 +040012 2012, 23:29:43

3 ответа


0

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

var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);
ответил Reddog 10 Jpm1000000pmTue, 10 Jan 2012 23:34:01 +040012 2012, 23:34:01
0
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);
    }
}
ответил MethodMan 10 Jpm1000000pmTue, 10 Jan 2012 23:36:19 +040012 2012, 23:36:19
0

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

ответил Mitchel Sellers 10 Jpm1000000pmTue, 10 Jan 2012 23:32:27 +040012 2012, 23:32:27

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132