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, "Hello") = "0123456Hello"
В противном случае вы можете указать количество символов, которое будет удалено:
"0123456789".ReplaceAt(2, 2, "Hello") = "01Hello456789"
Если указать длину, равную 0, то этофункция действует так же, как и функция вставки:
"0123456789".ReplaceAt(4, 0, "Hello") = "0123Hello456789"
Я полагаю, это более эффективно, поскольку класс StringBuilder не нужно инициализировать и поскольку он использует более простые операции.Пожалуйста, поправьте меня, если я ошибаюсь.:)