я не знаю, как исправить эту ошибку во время выполнения:как исправить ошибку с подстроки и IndexOf C#
http://postimg.org/image/hh9vl7hi9/
Значение roomsInfo является: «@ 114 | МАГ | БИК | 1 || дан | БИК | 1 || \ 0" и аварии, когда значение: „дан | БИК | 1 || \ 0“ (во второй раз в то время), когда я пытаюсь сделать эту строку:
roomsInfo = roomsInfo.Substring(roomsInfo.IndexOf('|') + 1, roomsInfo.IndexOf('\0'));
это полный код:
String roomsInfo = Program.sendToServ("@10||");
String[] room_name = new String[100];
String[] admin_name = new String[100];
String[] number_of_people = new String[100];
int check = 0, count = 0;
if(roomsInfo.IndexOf('\0') > 5)
{
roomsInfo = roomsInfo.Substring(roomsInfo.IndexOf('|')+1, roomsInfo.IndexOf('\0'));
while (roomsInfo[roomsInfo.IndexOf('|') + 2] != '\0' && roomsInfo[roomsInfo.IndexOf('|') + 1] != '\0') // @114|roomName1|RoomAdmin1|count1||roomName2|RoomAdmin2|count2||
{
if (check == 0)
{
room_name[count] = roomsInfo.Substring(0, roomsInfo.IndexOf('|'));
check = 1;
roomsInfo = roomsInfo.Substring(roomsInfo.IndexOf('|') + 1, roomsInfo.IndexOf('\0'));
}
if (check == 1)
{
admin_name[count] = roomsInfo.Substring(0, roomsInfo.IndexOf('|'));
check = 2;
roomsInfo = roomsInfo.Substring(roomsInfo.IndexOf('|') + 1, roomsInfo.IndexOf('\0'));
}
if (check == 2)
{
number_of_people[count] = roomsInfo.Substring(0, roomsInfo.IndexOf('|'));
check = 0;
count++;
roomsInfo = roomsInfo.Substring(roomsInfo.IndexOf('|') + 2, roomsInfo.IndexOf('\0'));
}
}
}
Спасибо! Nir
Вам следует рассмотреть возможность начать с 'roomsInfo.Split ('|')' вместо 'roomsInfo.IndexOf ('|') 'он поместит каждую часть этой строки в массив, с которым вам будет легче работать. –