In einem String nach best. Zeichenfolgen suchen

Hallo,

ich lese TCP-Pakete aus und erhalte hierbei einen String (siehe Code).

while (client.available())  // Read all the lines of the reply from server and print them to Serial
    {
      String line = client.readStringUntil('\r');
      Serial.print(line);
    }

Wie kann ich in line nach bestimmten Zeichenfolgen z.B. "01play" suchen?

Gruß Chris

Meinst Du sowas wie memcmp()?

Ja, nur muss ich in einem String suchen, oder benötige eine Möglichkeit, mit der ich anstatt dem String ein char-Array beschreiben kann, bis das cr kommt.

Für C-Char-Arays gibt es readBytesUntil.

Wenn Du unbedingt mit der Klasse String arbeiten willst, dann kannst Du auch line.find("01play"); benutzen.

Gruß Tommy

Du könntest folgendes benutzen:

int start = line.indexOf("01play");

Whandall:

int start = line.indexOf("01play");

Sehr geil- hiermit kann ich nun (fast) das umsetzen, was ich wollte.

Wenn ich mir jetzt hier nur noch das \r bei der Suche einsparen könnte, wäre das super.

if (line.indexOf("01play\r")) Serial.print("geht!");

Ich müsste also irgendwie line um das \r beschneiden, wenn ich das richtig sehe.

Wenn ich nämlich folgendermaßen suche, bekomme ich keine serielle Ausgabe:

if (line.indexOf("01play")) Serial.print("geht!");

Gruß Chris

Einfach nur if testet nicht das auf das du testen willst.

indexOf gibt -1 zurück, wenn nichts gefunden wird (falsch positiv) und 0 wenn der Strig am Anfag steht (falsch negativ).

String line = "abcdefg 01play the tune";

void setup() {
  int index = 0;
  Serial.begin(115200);
  if ((index = line.indexOf("01play\r")) >= 0) {
    Serial.print("bei Index ");
    Serial.print(index);
    Serial.print(" gefunden, mit \\r geht!");
  }
  if ((index = line.indexOf("01play")) >= 0) {
    Serial.print("bei Index ");
    Serial.print(index);
    Serial.print(" gefunden, ohne \\r geht!");
  }
}

void loop() {
}
bei Index 8 gefunden, ohne \r geht!

Ja, jetzt. Is echt geil! Weiss ned, wo da bei mir der Wurm drin war.

Jetzt funzt's- vielen Dank!

Gruß Chris

Chris72622:
Weiss ned, wo da bei mir der Wurm drin war.

Deswegen finde ich vollständige, lauffähige Minibeispiele des 'Problems' wichtig. :wink:
Dann hätte man dir genauer sagen können wo der Wurm bohrt.