You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.5 KiB
C

2 years ago
#pragma once
#include <string>
#include <string_view>
namespace stringUtils
{
/// <summary>
/// Case insensitive compare
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <returns></returns>
inline bool iequals(const std::string& a, const std::string& b)
{
return std::equal(a.begin(), a.end(),
b.begin(), b.end(),
[](char a, char b) {
return tolower(a) == tolower(b);
});
}
/// <summary>
/// left trim white space (\r\n etc)
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
inline std::string_view ltrim(std::string_view s)
{
s.remove_prefix(std::distance(s.cbegin(), std::find_if(s.cbegin(), s.cend(),
[](int c) { return !std::isspace(c); })));
return s;
}
/// <summary>
/// Right trim white space (\r\n etc)
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
inline std::string_view rtrim(std::string_view s)
{
s.remove_suffix(std::distance(s.crbegin(), std::find_if(s.crbegin(), s.crend(),
[](int c) { return !std::isspace(c); })));
return s;
}
/// <summary>
/// Left Right trim
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
inline std::string_view trim(std::string_view s)
{
return ltrim(rtrim(s));
}
}