У меня есть строка myString, длина которой около 10000.заменить строку в пределах диапазона в C#
Если я myString.Replace("A","B");
Он заменит все экземпляры А к В.
Как я могу сделать это не на всю строку, а только символ 5000-5500?
У меня есть строка myString, длина которой около 10000.заменить строку в пределах диапазона в C#
Если я myString.Replace("A","B");
Он заменит все экземпляры А к В.
Как я могу сделать это не на всю строку, а только символ 5000-5500?
StringBuilder myStringBuilder = new StringBuilder(myString);
myStringBuilder.Replace("A", "B", 5000, 500);
myString = myStringBuilder.ToString();
Для этого потребуется меньше выделения памяти, а затем методы, использующие String.Substring().
var sub1 = myString.SubString(0,4999);
var sub2 = myString.SubString(5000,500);
var sub3 = myString.SubString(5501,myString.Length-5501);
var result = sub1 + sub2.Replace("A","B") + sub3;
рассмотреть вопрос об использовании StringBuilder, (который performes лучше строковые распределений), особенно поскольку строки длинны. .. –
Разделите строку, используя SubString, и объедините результаты, когда операция завершена.
Или, итерации по всей строке в качестве символа char [] и (на основе индекса) выборочно выполняют замену. Это не создаст столько новых экземпляров строк, но будет более хрупким.
разделить строку, чтобы сделать 3 подстрок, среднее существо:
myString.Substring (5000, 500) .Надеть ("А", "Б");
затем приклеить их обратно вместе.
разделить строку из символа 5000 до 5500
, а затем применить замену методу
затем CONCAT Афоризм
+1: Отлично, никогда не знал об этой перегрузке. – Ani
+1 Один из тех методов, которые я всегда пропускал. – bitbonk