diff options
author | rubidium42 <rubidium@openttd.org> | 2021-05-30 11:20:00 +0200 |
---|---|---|
committer | rubidium42 <rubidium42@users.noreply.github.com> | 2021-06-13 10:26:58 +0200 |
commit | fed3e3305f6437a0d3ccf231585595838369b907 (patch) | |
tree | 2da623bc724b386e7cb363f646b868c8c5a7f8d8 /src | |
parent | 2d0abf5a7643afb2b37ca8902d13f1df5c14f5ee (diff) | |
download | openttd-fed3e3305f6437a0d3ccf231585595838369b907.tar.xz |
Codechange: add function to determine whether are string starts or ends with a given other string
Diffstat (limited to 'src')
-rw-r--r-- | src/string.cpp | 27 | ||||
-rw-r--r-- | src/string_func.h | 3 |
2 files changed, 30 insertions, 0 deletions
diff --git a/src/string.cpp b/src/string.cpp index e9a619c40..fbb447ee9 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -358,6 +358,33 @@ void StrTrimInPlace(std::string &str) StrRightTrimInPlace(str); } +/** + * Check whether the given string starts with the given prefix. + * @param str The string to look at. + * @param prefix The prefix to look for. + * @return True iff the begin of the string is the same as the prefix. + */ +bool StrStartsWith(const std::string_view str, const std::string_view prefix) +{ + size_t prefix_len = prefix.size(); + if (str.size() < prefix_len) return false; + return str.compare(0, prefix_len, prefix, 0, prefix_len) == 0; +} + +/** + * Check whether the given string ends with the given suffix. + * @param str The string to look at. + * @param suffix The suffix to look for. + * @return True iff the end of the string is the same as the suffix. + */ +bool StrEndsWith(const std::string_view str, const std::string_view suffix) +{ + size_t suffix_len = suffix.size(); + if (str.size() < suffix_len) return false; + return str.compare(str.size() - suffix_len, suffix_len, suffix, 0, suffix_len) == 0; +} + + /** Scans the string for colour codes and strips them */ void str_strip_colours(char *str) { diff --git a/src/string_func.h b/src/string_func.h index 2e258fbd2..0cbf26d6b 100644 --- a/src/string_func.h +++ b/src/string_func.h @@ -51,6 +51,9 @@ bool strtolower(std::string &str, std::string::size_type offs = 0); bool StrValid(const char *str, const char *last) NOACCESS(2); void StrTrimInPlace(std::string &str); +bool StrStartsWith(const std::string_view str, const std::string_view prefix); +bool StrEndsWith(const std::string_view str, const std::string_view suffix); + /** * Check if a string buffer is empty. * |