diff options
Diffstat (limited to 'StringTools/src/StringTools.cpp')
| -rw-r--r-- | StringTools/src/StringTools.cpp | 239 |
1 files changed, 122 insertions, 117 deletions
diff --git a/StringTools/src/StringTools.cpp b/StringTools/src/StringTools.cpp index ac33664..8828f72 100644 --- a/StringTools/src/StringTools.cpp +++ b/StringTools/src/StringTools.cpp @@ -1,155 +1,160 @@ #include "StringTools/StringTools.h" #include <sstream> -std::string StringTools::Replace(const std::string& str, const char find, const std::string& subst) { - std::stringstream ss; +namespace Leonetienne::StringTools { - for (std::size_t i = 0; i < str.length(); i++) - { - if (str[i] != find) - ss << str[i]; - else - ss << subst; - } + std::string StringTools::Replace(const std::string& str, const char find, const std::string& subst) { + std::stringstream ss; - return ss.str(); -} + for (std::size_t i = 0; i < str.length(); i++) + { + if (str[i] != find) + ss << str[i]; + else + ss << subst; + } -std::string StringTools::Replace(const std::string& str, const std::string& find, const std::string& subst) { - if (find.length() == 0) - return str; + return ss.str(); + } - std::stringstream ss; + std::string StringTools::Replace(const std::string& str, const std::string& find, const std::string& subst) { + if (find.length() == 0) + return str; - std::size_t posFound = 0; - std::size_t lastFound = 0; + std::stringstream ss; - while (posFound != std::string::npos) - { - lastFound = posFound; - posFound = str.find(find, posFound); + std::size_t posFound = 0; + std::size_t lastFound = 0; - if (posFound != std::string::npos) - { - ss << str.substr(lastFound, posFound - lastFound) << subst; - posFound += find.length(); - } - else - { - ss << str.substr(lastFound, (str.length()) - lastFound); - } - } + while (posFound != std::string::npos) + { + lastFound = posFound; + posFound = str.find(find, posFound); - return ss.str(); -} + if (posFound != std::string::npos) + { + ss << str.substr(lastFound, posFound - lastFound) << subst; + posFound += find.length(); + } + else + { + ss << str.substr(lastFound, (str.length()) - lastFound); + } + } -std::string StringTools::Replace(const std::string& str, const char find, const char subst) { - std::stringstream ss; - ss << subst; + return ss.str(); + } - return Replace(str, find, ss.str()); -} + std::string StringTools::Replace(const std::string& str, const char find, const char subst) { + std::stringstream ss; + ss << subst; -std::string StringTools::Replace(const std::string& str, const std::string& find, const char subst) { - std::stringstream ss; - ss << subst; + return Replace(str, find, ss.str()); + } - return Replace(str, find, ss.str()); -} + std::string StringTools::Replace(const std::string& str, const std::string& find, const char subst) { + std::stringstream ss; + ss << subst; -std::string StringTools::Lower(const std::string& str) { - std::stringstream ss; + return Replace(str, find, ss.str()); + } - for (std::size_t i = 0; i < str.size(); i++) - { - const char c = str[i]; + std::string StringTools::Lower(const std::string& str) { + std::stringstream ss; - // Quick-accept: regular letters - if ((c >= 'A') && (c <= 'Z')) - ss << (char)(c | 32); + for (std::size_t i = 0; i < str.size(); i++) + { + const char c = str[i]; - // Else: keep the character as is - else ss << c; - } + // Quick-accept: regular letters + if ((c >= 'A') && (c <= 'Z')) + ss << (char)(c | 32); - return ss.str(); -} + // Else: keep the character as is + else ss << c; + } -std::string StringTools::Upper(const std::string& str) { - std::stringstream ss; + return ss.str(); + } - for (std::size_t i = 0; i < str.size(); i++) - { - const char c = str[i]; + std::string StringTools::Upper(const std::string& str) { + std::stringstream ss; - // Quick-accept: regular letters - if ((c >= 'a') && (c <= 'z')) - ss << (char)(c & ~32); + for (std::size_t i = 0; i < str.size(); i++) + { + const char c = str[i]; - // Else: keep the character as is - else ss << c; - } + // Quick-accept: regular letters + if ((c >= 'a') && (c <= 'z')) + ss << (char)(c & ~32); - return ss.str(); -} + // Else: keep the character as is + else ss << c; + } -std::vector<std::string> StringTools::Split(const std::string& str, const std::string& seperator) { - std::vector<std::string> toRet; - // Quick-accept: str length is 0 - if (str.length() == 0) - toRet.push_back(""); - - // Quick-accept: seperator length is 0 - else if (seperator.length() == 0) { - for (const char c : str) - toRet.push_back(std::string(&c, (&c) + 1)); - } - - else { - std::size_t idx = 0; - while (idx != std::string::npos) { - std::size_t lastIdx = idx; - idx = str.find(seperator, idx); - - // Grab our substring until the next finding of sep - if (idx != std::string::npos) { - toRet.push_back(str.substr( - lastIdx, - idx - lastIdx - )); - - idx += seperator.length(); - } - // No more seperator found. Grab the rest until the end of the string - else { - toRet.push_back(str.substr( - lastIdx - )); + return ss.str(); + } + + std::vector<std::string> StringTools::Split(const std::string& str, const std::string& seperator) { + std::vector<std::string> toRet; + // Quick-accept: str length is 0 + if (str.length() == 0) + toRet.push_back(""); + + // Quick-accept: seperator length is 0 + else if (seperator.length() == 0) { + for (const char c : str) + toRet.push_back(std::string(&c, (&c) + 1)); + } + + else { + std::size_t idx = 0; + while (idx != std::string::npos) { + std::size_t lastIdx = idx; + idx = str.find(seperator, idx); + + // Grab our substring until the next finding of sep + if (idx != std::string::npos) { + toRet.push_back(str.substr( + lastIdx, + idx - lastIdx + )); + + idx += seperator.length(); + } + // No more seperator found. Grab the rest until the end of the string + else { + toRet.push_back(str.substr( + lastIdx + )); + } } } - } - return toRet; -} + return toRet; + } -std::string StringTools::PadLeft(const std::string& str, const char pad, const std::size_t len) { - std::stringstream ss; + std::string StringTools::PadLeft(const std::string& str, const char pad, const std::size_t len) { + std::stringstream ss; - for (std::size_t i = str.length(); i < len; i++) - ss << pad; + for (std::size_t i = str.length(); i < len; i++) + ss << pad; - ss << str; + ss << str; - return ss.str(); -} + return ss.str(); + } -std::string StringTools::PadRight(const std::string& str, const char pad, const std::size_t len) { - std::stringstream ss; + std::string StringTools::PadRight(const std::string& str, const char pad, const std::size_t len) { + std::stringstream ss; + + ss << str; - ss << str; + for (std::size_t i = str.length(); i < len; i++) + ss << pad; - for (std::size_t i = str.length(); i < len; i++) - ss << pad; + return ss.str(); + } - return ss.str(); } + |
