Всем привет.
Проблема в том, что в указанных местах строка не изменяется. В дебаге вызов указаных функций происходит нормально, а строка совсем не меняется.
string ReplaceSecondWord(byte[] barr, string snew)
{
string s = Encoding.ASCII.GetString(barr).TrimRight(new char[]{ '\0' });
int firstSpacePosition = s.IndexOf(' ');
int secondSpacePosition = s.IndexOf(' ', firstSpacePosition + 1);
s.Remove(firstSpacePosition + 1, secondSpacePosition - firstSpacePosition + 1); // ТУТ СТРОКА НЕ МЕНЯЕТСЯ
s.Insert(firstSpacePosition + 1, snew); // ТУТ ТОЖЕ СТРОКА НЕ МЕНЯЕТСЯ
return s;
}
Код пишу по памяти, не пинайте за опечатки.
В чем здесь проблема?
Здравствуйте, _ks_, Вы писали:
__>Всем привет.
__>Проблема в том, что в указанных местах строка не изменяется. В дебаге вызов указаных функций происходит нормально, а строка совсем не меняется.
__>__>string ReplaceSecondWord(byte[] barr, string snew)
__>{
__> string s = Encoding.ASCII.GetString(barr).TrimRight(new char[]{ '\0' });
__> int firstSpacePosition = s.IndexOf(' ');
__> int secondSpacePosition = s.IndexOf(' ', firstSpacePosition + 1);
__> s.Remove(firstSpacePosition + 1, secondSpacePosition - firstSpacePosition + 1); // ТУТ СТРОКА НЕ МЕНЯЕТСЯ
__> s.Insert(firstSpacePosition + 1, snew); // ТУТ ТОЖЕ СТРОКА НЕ МЕНЯЕТСЯ
__> return s;
__>}
__>
__>Код пишу по памяти, не пинайте за опечатки.
__>В чем здесь проблема?
String — immutable type. Используй StringBuilder, или
s = s.Remove(firstSpacePosition + 1, secondSpacePosition - firstSpacePosition + 1);
s = s.Insert(firstSpacePosition + 1, snew);