Skip to content

Commit

Permalink
Provide String::indexOf for a char* needle (#7706)
Browse files Browse the repository at this point in the history
  • Loading branch information
paulocsanz authored Nov 13, 2020
1 parent 8375faa commit c5c9f84
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
22 changes: 19 additions & 3 deletions cores/esp8266/WString.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -617,19 +617,35 @@ int String::indexOf(char ch, unsigned int fromIndex) const {
return temp - buffer();
}

int String::indexOf(const String &s2) const {
int String::indexOf(const __FlashStringHelper *s2) const {
return indexOf(s2, 0);
}

int String::indexOf(const String &s2, unsigned int fromIndex) const {
int String::indexOf(const __FlashStringHelper *s2, unsigned int fromIndex) const {
return indexOf((const char*) s2, fromIndex);
}

int String::indexOf(const char *s2) const {
return indexOf(s2, 0);
}

int String::indexOf(const char *s2, unsigned int fromIndex) const {
if (fromIndex >= len())
return -1;
const char *found = strstr(buffer() + fromIndex, s2.buffer());
const char *found = strstr_P(buffer() + fromIndex, s2);
if (found == NULL)
return -1;
return found - buffer();
}

int String::indexOf(const String &s2) const {
return indexOf(s2, 0);
}

int String::indexOf(const String &s2, unsigned int fromIndex) const {
return indexOf(s2.c_str(), fromIndex);
}

int String::lastIndexOf(char theChar) const {
return lastIndexOf(theChar, len() - 1);
}
Expand Down
4 changes: 4 additions & 0 deletions cores/esp8266/WString.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,10 @@ class String {
// search
int indexOf(char ch) const;
int indexOf(char ch, unsigned int fromIndex) const;
int indexOf(const char *str) const;
int indexOf(const char *str, unsigned int fromIndex) const;
int indexOf(const __FlashStringHelper *str) const;
int indexOf(const __FlashStringHelper *str, unsigned int fromIndex) const;
int indexOf(const String &str) const;
int indexOf(const String &str, unsigned int fromIndex) const;
int lastIndexOf(char ch) const;
Expand Down
4 changes: 4 additions & 0 deletions tests/host/core/test_string.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@ TEST_CASE("String nulls", "[core][String]")
REQUIRE(s.lastIndexOf("tacos") == -1);
REQUIRE(s.lastIndexOf('t', 0) == -1);
REQUIRE(s.lastIndexOf('t') == -1);
REQUIRE(s.indexOf(String("tacos"), 1) == -1);
REQUIRE(s.indexOf(String("tacos")) == -1);
REQUIRE(s.indexOf(F("tacos"), 1) == -1);
REQUIRE(s.indexOf(F("tacos")) == -1);
REQUIRE(s.indexOf("tacos", 1) == -1);
REQUIRE(s.indexOf("tacos") == -1);
REQUIRE(s.indexOf('t', 1) == -1);
Expand Down

0 comments on commit c5c9f84

Please sign in to comment.