ReplaceAt (индекс int, длина int, замена строки)
Вот метод расширения, который не использует StringBuilder или Substring. Этот метод также позволяет замещающей строке выходить за пределы длины исходной строки.
//// str - the source string
//// index- the start location to replace at (0-based)
//// length - the number of characters to be removed before inserting
//// replace - the string that is replacing characters
public static string ReplaceAt(this string str, int index, int length, string replace)
{
return str.Remove(index, Math.Min(length, str.Length - index))
.Insert(index, replace);
}
При использовании этой функции, если вы хотите, чтобы вся замещающая строка заменяла как можно больше символов, задайте длину равной длине замещающей строки:
"0123456789".ReplaceAt(7, 5, "Salut") = "0123456Salut"
В противном случае вы можете указать количество символов, которые будут удалены:
"0123456789".ReplaceAt(2, 2, "Salut") = "01Salut456789"
Если вы укажете длину равной 0, то эта функция действует так же, как и функция вставки:
"0123456789".ReplaceAt(4, 0, "Salut") = "0123Salut456789"
Полагаю, это более эффективно, поскольку класс StringBuilder не нужно инициализировать и поскольку он использует более простые операции.
Надеюсь, что эта помощь