Есть ли способ изменить значение внутри строки не переводя её в массив символов? Например "Машинная сила" в "Машинная пила".
Ответ
Нет.
Строки в C# неизменяемые, так что вам придётся создавать новую строку, изменить уже существующую строку невозможно*.
Если нужна запись символов по индексу, то проще всего перегнать строку в StringBuilder, в котором можно менять значения по индексу, а также добавлять их и удалять. А после окончания обработки снова перегнать в строку:
string s = "Машинная сила";
StringBuilder sb = new StringBuilder(s);
sb[9] = 'п';
s = sb.ToString();
Если нужно заменить один символ, может быть проще всего откусить подстроку до этого символа и после, и сконкатенировать.
Обратите внимание, что в коде у меня каждый раз создаётся новая строка, так что те, кто имел ссылку на старую строку, не увидят изменений.
*Ну то есть возможно через unsafe-код или там рефлексию, но если вы так сделаете, ваш тимлид и вся команда прибегут бить вас после первого же code review.
Комментариев нет:
Отправить комментарий