| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- #include "Base.h"
- #include "StringUtil.h"
- namespace gameplay
- {
- inline char lowercase(char c)
- {
- if (c >= 'A' && c <='Z')
- {
- c |= 0x20;
- }
- return c;
- }
- bool startsWith(const char* str, const char* prefix, bool ignoreCase)
- {
- size_t length = strlen(str);
- size_t prefixLength = strlen(prefix);
- if (prefixLength > length)
- {
- return false;
- }
- const char* p = str;
- while (*p != '\0' && *prefix != '\0')
- {
- if (ignoreCase)
- {
- if (lowercase(*p) != lowercase(*prefix))
- {
- return false;
- }
- }
- else if (*p != *prefix)
- {
- return false;
- }
-
- ++p;
- ++prefix;
- }
- return true;
- }
- bool endsWith(const char* str, const char* suffix, bool ignoreCase)
- {
- size_t length = strlen(str);
- size_t suffixLength = strlen(suffix);
- if (suffixLength > length)
- {
- return false;
- }
- size_t offset = length - suffixLength;
- const char* p = str + offset;
- while (*p != '\0' && *suffix != '\0')
- {
- if (ignoreCase)
- {
- if (lowercase(*p) != lowercase(*suffix))
- {
- return false;
- }
- }
- else if (*p != *suffix)
- {
- return false;
- }
-
- ++p;
- ++suffix;
- }
- return true;
- }
- bool endsWith(const std::string& str, const char* suffix, bool ignoreCase)
- {
- return endsWith(str.c_str(), suffix, ignoreCase);
- }
- bool equals(const std::string& a, const char* b)
- {
- return (a.compare(b) == 0);
- }
- bool equals(const std::string& a, const std::string& b)
- {
- return (a.compare(b) == 0);
- }
- bool equalsIgnoreCase(const std::string& a, const char* b)
- {
- size_t bLength = strlen(b);
- if (a.size() != bLength)
- {
- return false;
- }
- for (size_t i = 0; i < bLength; ++i)
- {
- if (lowercase(a[i]) != lowercase(b[i]))
- {
- return false;
- }
- }
- return true;
- }
- std::string getFilenameFromFilePath(const std::string& filepath)
- {
- if (filepath.find_last_of("/") != std::string::npos)
- {
- return filepath.substr(filepath.find_last_of("/") + 1);
- }
- return "";
- }
- std::string getFilenameNoExt(const std::string& filename)
- {
- if (filename.find_last_of(".") != std::string::npos)
- {
- return filename.substr(0, filename.find_last_of("."));
- }
- return filename;
- }
- }
|