Страницы

Поиск по вопросам

пятница, 26 апреля 2019 г.

Изменение значения внутри строки

Есть ли способ изменить значение внутри строки не переводя её в массив символов? Например "Машинная сила" в "Машинная пила".


Ответ

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

*Ну то есть возможно через unsafe-код или там рефлексию, но если вы так сделаете, ваш тимлид и вся команда прибегут бить вас после первого же code review.

Комментариев нет:

Отправить комментарий