Arduino Split()-Funktion eines Strings

Hallo,

ich habe heute die Funktion split() online gefunden.

http://wp.scalesoft.de/arduino-split/

Ich habe versucht sie mit meinem Arduino auszuführen doch es ging nicht. Ich habe keine Antwort bekommen.

String text = "eins_zwei_drei";
String cmd;
void setup() {
  Serial.begin(9600);
  cmd = split(text, '_', 2);

  Serial.println(cmd);
}

void loop() {

}

String split(String s, char parser, int index) {
  String rs = "";
  int parserIndex = index;
  int parserCnt = 0;
  int rFromIndex = 0, rToIndex = -1;
  while (index >= parserCnt) {
    rFromIndex = rToIndex + 1;
    rToIndex = s.indexOf(parser, rFromIndex);
    if (index == parserCnt) {
      if (rToIndex == 0 || rToIndex == -1) return "";
      return s.substring(rFromIndex, rToIndex);
    } else parserCnt++;
  }
  return rs;
}

Wo habe ich den Fehler gemacht? Die Funktion sollte ganz brauchbar sein.

Hi

Nimm Mal eine 1 statt einer 2.
Wenn ich die Funktion korrekt verstehe, ignoriert Sie die angegebene Anzahl an Vorkommen - und dann ist bei Dir schon der String vorbei.
Weiter wird mit einer Kopie des String gearbeitet - auf Uno und Nano vll. keine sonderlich gute Idee - allgemein Strings zu benutzen - erschwerend, wenn dann noch massig neue Strings angelegt werden (ok, 1x die Kopie für den Funktionsaufruf).

MfG

Jo Danke du hast recht! Mit 1 ging es. Wenn ich ein _ hinter der drei mache findet er auch diese. Ich nutze einen Mega. Ich weiß nicht wie lang mein String wird daher wollte ich ihn ungern in einen Char umwandeln und dann weiterverarbeiten. Ich probiere es mal aus. Danke noch mal.

Hi

Der Mega hat einiges Mehr an Speicher, als Uno und Nano - man sollte nur im Hinterkopf behalten, daß Strings (mit großem S) durchaus Ausfälle/Fehler mitbringen können, Die erst weit innerhalb der Laufzeit auftauchen, weil dann eben irgendwo der Speicher ausgeht.

Wenn's klappt: passt
Wenn's Ärger macht: könnte hier ein Angriffspunkt sein, Der dem Übel entgegen wirkt

MfG

Ich nutze einen Mega. Ich weiß nicht wie lang mein String wird daher wollte ich ihn ungern in einen Char umwandeln und dann weiterverarbeiten.

Interessante Begründung!

Ich lese daraus:

Da ich nur wenig Platz habe verwende ich lieber die kompliziertere und Speicher fressende Variante.