diff --git a/m-string.h b/m-string.h index 26fe4f84..dca7aff4 100644 --- a/m-string.h +++ b/m-string.h @@ -436,6 +436,15 @@ string_cspn(const string_t v1, const char accept[]) return strcspn(string_get_cstr(v1), accept); } +static inline size_t +string_pbrk(const string_t v1, const char first_of[]) +{ + STRING_CONTRACT (v1); + M_ASSUME (first_of != NULL); + const char *p = M_ASSIGN_CAST(const char*, strpbrk(string_get_cstr(v1), first_of)); + return p == NULL ? STRING_FAILURE : (size_t) (p-string_get_cstr(v1)); +} + static inline void string_left(string_t v, size_t index) { diff --git a/tests/test-mstring.c b/tests/test-mstring.c index 311987ae..a911c313 100644 --- a/tests/test-mstring.c +++ b/tests/test-mstring.c @@ -318,6 +318,11 @@ int main(void) string_replace_at(s1, 6, 3, "World"); assert(string_equal_str_p(s1, "HELLO World!")); + h = string_pbrk(s1, "AB"); + assert(h==STRING_FAILURE); + h = string_pbrk(s1, "oO"); + assert(h==4); + string_clear (s1); string_clear (s2);