Core/StringExt: Add TrimLeftCount and TrimRightCount

This commit is contained in:
SirLynix
2024-01-26 15:11:31 +01:00
parent 22a047b3b1
commit f10671ac2a
4 changed files with 85 additions and 0 deletions

View File

@@ -645,6 +645,20 @@ namespace Nz
return std::string_view(it.base(), end.base() - it.base());
}
std::string_view TrimLeftCount(std::string_view str, std::size_t n, UnicodeAware)
{
utf8::unchecked::iterator<const char*> it(str.data());
utf8::unchecked::iterator<const char*> end(str.data() + str.size());
while (it != end && n > 0)
{
++it;
--n;
}
return std::string_view(it.base(), end.base() - it.base());
}
std::string_view TrimRight(std::string_view str)
{
NAZARA_USE_ANONYMOUS_NAMESPACE
@@ -742,4 +756,22 @@ namespace Nz
return std::string_view(start.base(), it.base() - start.base());
}
std::string_view TrimRightCount(std::string_view str, std::size_t n, UnicodeAware)
{
if (str.empty())
return str;
const char* begin = str.data();
const char* ptr = begin + str.size();
for (std::size_t i = 0; i < n; ++i)
{
if (ptr == begin)
return {};
utf8::prior(ptr, begin);
}
return std::string_view(begin, ptr - begin);
}
}