diff options
Diffstat (limited to 'base/include')
-rw-r--r-- | base/include/android-base/strings.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/base/include/android-base/strings.h b/base/include/android-base/strings.h index 8e9716f9f..b1c22c9f7 100644 --- a/base/include/android-base/strings.h +++ b/base/include/android-base/strings.h @@ -18,6 +18,7 @@ #include <sstream> #include <string> +#include <string_view> #include <vector> namespace android { @@ -68,5 +69,21 @@ bool EndsWithIgnoreCase(std::string_view s, std::string_view suffix); // Tests whether 'lhs' equals 'rhs', ignoring case. bool EqualsIgnoreCase(std::string_view lhs, std::string_view rhs); +// Removes `prefix` from the start of the given string and returns true (if +// it was present), false otherwise. +inline bool ConsumePrefix(std::string_view* s, std::string_view prefix) { + if (!StartsWith(*s, prefix)) return false; + s->remove_prefix(prefix.size()); + return true; +} + +// Removes `suffix` from the end of the given string and returns true (if +// it was present), false otherwise. +inline bool ConsumeSuffix(std::string_view* s, std::string_view suffix) { + if (!EndsWith(*s, suffix)) return false; + s->remove_suffix(suffix.size()); + return true; +} + } // namespace base } // namespace android |