Парсинг String
- Войдите на сайт для отправки комментариев
Ср, 06/01/2021 - 22:47
Люди добрые поможите!
Я хочу распарсить строку вида к примеру. 100.50.3.5
Вот этот код парсит эту строку нормально
byte pointer0, pointer1, pointer2, pointer3;
int8_t Val0, Val1, Val2, Val3;
pointer0 = SSDP_Name.indexOf('.'); //finds location of first ,
Val0 = (SSDP_Name.substring(0, pointer0)).toInt(); //captures first data String
pointer1 = SSDP_Name.indexOf('.', pointer0 + 1 ); //finds location of second ,
Val1 = (SSDP_Name.substring(pointer0 + 1, pointer1 + 1)).toInt(); //captures second data String
pointer2 = SSDP_Name.indexOf('.', pointer1 + 1 );
Val2 = (SSDP_Name.substring(pointer1 + 1, pointer2 + 1)).toInt();
pointer3 = SSDP_Name.indexOf('.', pointer2 + 1 );
Val3 = (SSDP_Name.substring(pointer2 + 1)).toInt(); //captures remain part of data after
А вот этот почему-то выдает абракадабру. Хотя уже вроде тыщу раз его пробежал глазами, укажите пожалуйста где у меня в нем ошибка.
int value[4];
int pointer[4];
int oldPointer = 0;
int i = 0;
pointer[i] = SSDP_Name.indexOf(".");
value[i] = (SSDP_Name.substring(oldPointer, pointer[i])).toInt();
for (int i = 1; i < 4; i++) {
pointer[i] = SSDP_Name.indexOf(".", pointer[i - 1] + 1);
value[i] = (SSDP_Name.substring(pointer[i - 1] + 1, pointer[i] + 1)).toInt();
}
Получилось
int p[4]; String v[4]; int i = 0; p[i] = SSDP_Name.indexOf('.'); v[i] = SSDP_Name.substring(0, p[i]); Serial.println(v[i]); for (i = 1; i < 4; i++) { if (i == 3) v[i] = SSDP_Name.substring(p[i - 1] + 1); else { p[i] = SSDP_Name.indexOf('.', p[i - 1] + 1); v[i] = SSDP_Name.substring(p[i - 1] + 1, p[i]); } Serial.println(v[i]); }