Dúvida com substring

Pessoal consegui esse exemplo para extrair substrings de uma string . Porem para ela funcionar corretamente está precisando de uma última virgula na string . Teria como fazer funcionar sem essa virgula ? Não sei como alterar.

String a = "10.00,teste,50.00,-1234.67,A," ;// precisa terminar "," ?

void setup() {
  Serial.begin(115200);

  int i1 = a.indexOf(',');
  int i2 = a.indexOf(',', i1 + 1);
  int i3 = a.indexOf(',', i2 + 1);
  int i4 = a.indexOf(',', i3 + 1);
  int i5 = a.indexOf(',', i4 + 1);
  int i6 = a.indexOf(',', i5 + 1);

  String Value1 = a.substring(0, i1);
  String Value2 = a.substring(i1 + 1, i2);
  String Value3 = a.substring(i2 + 1, i3);
  String Value4 = a.substring(i3 + 1, i4);
  String Value5 = a.substring(i4 + 1, i5);
  String Value6 = a.substring(i5 + 1);

  Serial.println(Value1);
  Serial.println(Value2);
  Serial.println(Value3);
  Serial.println(Value4);
  Serial.println(Value5);
  Serial.println(Value6);
}

void loop() {
  // put your main code here, to run repeatedly:

}

Olá,
teste este sketch e veja se atende sua necessidade:

String a = "10.00,teste,50.00,-1234.67,A" ;// precisa terminar "," ?

void setup() {
  Serial.begin(115200);

  int mylgt = a.length();                   // Tamanho da string

  int i1 = a.indexOf(',');                  // Primeira virgula
  int i2 = a.indexOf(',', i1 + 1);          // Segunda virgula
  int i3 = a.indexOf(',', i2 + 1);          // Terceira virgula
  int i4 = a.indexOf(',', i3 + 1);          // Quarta virgula

  String Value1 = a.substring(0, i1);
  String Value2 = a.substring(i1 + 1, i2);
  String Value3 = a.substring(i2 + 1, i3);
  String Value4 = a.substring(i3 + 1, i4);
  String Value5 = a.substring(i4 + 1, mylgt);
  
  Serial.println(Value1);
  Serial.println(Value2);
  Serial.println(Value3);
  Serial.println(Value4);
  Serial.println(Value5);
}

void loop() {
  // put your main code here, to run repeatedly:

}
1 Like

Será que em vez do comprimento da string não poderia usar algo como o CR / LF ?

@acjacques
Depende, se a string for recebida pela serial, talvez,
mas ele não citou nada de como é recebida.

Outra opção seria o uso do caractere de fim de string, que é um caractere "null" (\0).

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.