Заменить первое вхождение шаблона в строку
Возможный дубликат:
Как заменить первый экземпляр строки в .NET?
Предположим, у меня есть строка:
string s = "Hello world.";
как я могу заменить первое слово в слове « Hello
», скажем, Foo
?
- Regex: знак вопроса и двоеточие
- C # Regex Split - все внутри квадратных скобок
- Как включить новые строки в поиск меньше?
- Как Regex искать / заменять только первое вхождение в строку в .NET?
- Как избежать строки для использования в Boost Regex
Другими словами, я хочу закончить:
"HellFoo world."
Я знаю, как заменить все o, но я хочу заменить только первый
- Извлечение IP-адресов из строк с использованием регулярных выражений
- RegEx соответствует номерам, разделенным запятой, с необязательной десятичной частью
- Признавательная способность «современных» регулярных выражений
- Исключение регулярного выражения JavaScript (недопустимая группа)
- Регулярное выражение, соответствующее полностью квалифицированным именам classов
- R grep: есть ли оператор AND?
- MySQL для сравнения нечисловых символов для сравнения
- Как использовать / Включить (объект RegExp) Регулярное выражение с использованием VBA (MACRO) в слове
Я думаю, вы можете использовать перегрузку Regex.Replace, чтобы указать максимальное количество раз для замены …
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 для поиска позиции индекса буквы, которую вы хотите заменить, а затем подстроить текст до и после того, что вы хотите заменить.