StringTools/Src/StringTools.cpp

101 lines
2.2 KiB
C++
Raw Normal View History

2021-11-20 19:24:35 +01:00
#include "StringTools.h"
#include <sstream>
std::string StringTools::Replace(const std::string& str, const char find, const std::string& subst)
{
std::stringstream ss;
for (std::size_t i = 0; i < str.length(); i++)
{
if (str[i] != find)
ss << str[i];
else
ss << subst;
}
return ss.str();
}
std::string StringTools::Replace(const std::string& str, const std::string& find, const std::string& subst)
{
if (find.length() == 0)
return str;
std::stringstream ss;
std::size_t posFound = 0;
std::size_t lastFound = 0;
while (posFound != std::string::npos)
{
lastFound = posFound;
posFound = str.find(find, posFound);
if (posFound != std::string::npos)
{
ss << str.substr(lastFound, posFound - lastFound) << subst;
posFound += find.length();
}
else
{
ss << str.substr(lastFound, (str.length()) - lastFound);
}
}
return ss.str();
}
std::string StringTools::Replace(const std::string& str, const char find, const char subst)
{
std::stringstream ss;
ss << subst;
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;
return Replace(str, find, ss.str());
2021-12-04 20:18:09 +01:00
}
std::string StringTools::Lower(const std::string& str)
{
std::stringstream ss;
for (std::size_t i = 0; i < str.size(); i++)
{
const char c = str[i];
// Quick-accept: regular letters
if ((c >= 'A') && (c <= 'Z'))
2021-12-05 17:57:12 +01:00
ss << (char)(c | 32);
2021-12-04 20:18:09 +01:00
2022-02-11 01:12:19 +01:00
// Else: keep the character as is
2021-12-04 20:18:09 +01:00
else ss << c;
}
return ss.str();
}
2021-12-04 20:29:17 +01:00
std::string StringTools::Upper(const std::string& str)
{
std::stringstream ss;
for (std::size_t i = 0; i < str.size(); i++)
{
const char c = str[i];
// Quick-accept: regular letters
if ((c >= 'a') && (c <= 'z'))
2021-12-05 17:57:12 +01:00
ss << (char)(c & ~32);
2021-12-04 20:29:17 +01:00
2022-02-11 01:12:19 +01:00
// Else: keep the character as is
2021-12-04 20:29:17 +01:00
else ss << c;
}
return ss.str();
}