Парсинг String

dizzel
Offline
Зарегистрирован: 21.03.2016

Люди добрые поможите!

Я хочу распарсить строку вида к примеру. 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();
  }

 

dizzel
Offline
Зарегистрирован: 21.03.2016

Получилось 

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