string не изменяется после Remove/Insert
От: _ks_  
Дата: 22.01.07 09:28
Оценка: :)
Всем привет.

Проблема в том, что в указанных местах строка не изменяется. В дебаге вызов указаных функций происходит нормально, а строка совсем не меняется.

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;
}

Код пишу по памяти, не пинайте за опечатки.


В чем здесь проблема?
Re: string не изменяется после Remove/Insert
От: Andrew_ImP  
Дата: 22.01.07 09:34
Оценка: 1 (1)
Здравствуйте, _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);
Re: string не изменяется после Remove/Insert
От: .Den Украина  
Дата: 22.01.07 09:36
Оценка: 1 (1)
Здравствуйте, _ks_, Вы писали:


__>В чем здесь проблема?


Попробуй s = s.Remove(firstSpacePosition + 1, secondSpacePosition — firstSpacePosition + 1);

И почитай про строки в .Net
Re[2]: string не изменяется после Remove/Insert
От: _ks_  
Дата: 22.01.07 09:39
Оценка:
__>>В чем здесь проблема?
D>Попробуй s = s.Remove(firstSpacePosition + 1, secondSpacePosition — firstSpacePosition + 1);
D>И почитай про строки в .Net

Прийдётся опять почитать. Спасибо!
Проблема решена.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.