Ответ 1
Я думаю, вы можете использовать перегрузку Regex.Replace, чтобы указать максимальное количество раз для замены...
var regex = new Regex(Regex.Escape("o"));
var newText = regex.Replace("Hello World", "Foo", 1);
Возможный дубликат:
Как заменить первый экземпляр строки в .NET?
Скажем, у меня есть строка:
string s = "Hello world.";
как я могу заменить первый o
в слове Hello
, скажем, Foo
?
Другими словами, я хочу в итоге:
"HellFoo world."
Я знаю, как заменить все o, но я хочу заменить только первый
Я думаю, вы можете использовать перегрузку 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 для поиска позиции индекса для буквы, которую вы хотите заменить, а затем подстроить текст до и после того, что вы хотите заменить.