27[[nodiscard]]
bool isNewLine(std::string_view str);
55[[nodiscard]]
bool isNumber(std::string_view str);
71[[nodiscard]]
bool contains(std::string_view s,
char c);
81[[nodiscard]]
bool matches(std::string_view in, std::string_view search,
bool ignoreCase =
false);
83[[nodiscard]]
bool iequals(std::string_view s1, std::string_view s2);
85void ltrim(std::string& s);
87[[nodiscard]] std::string_view
ltrim(std::string_view s);
89void rtrim(std::string& s);
91[[nodiscard]] std::string_view
rtrim(std::string_view s);
93void trim(std::string& s);
95[[nodiscard]] std::string_view
trim(std::string_view s);
99[[nodiscard]] std::string
trimInternal(std::string_view s);
101void ltrim(std::string& s, std::string_view chars);
103[[nodiscard]] std::string_view
ltrim(std::string_view s, std::string_view chars);
105void rtrim(std::string& s, std::string_view chars);
107[[nodiscard]] std::string_view
rtrim(std::string_view s, std::string_view chars);
109void trim(std::string& s, std::string_view chars);
111[[nodiscard]] std::string_view
trim(std::string_view s, std::string_view chars);
113void trimInternal(std::string& s, std::string_view chars);
115[[nodiscard]] std::string
trimInternal(std::string_view s, std::string_view chars);
117[[nodiscard]] std::vector<std::string>
split(std::string_view s,
char delim);
119void toLower(std::string& input);
121[[nodiscard]] std::string
toLower(std::string_view input);
123void toUpper(std::string& input);
125[[nodiscard]] std::string
toUpper(std::string_view input);
127[[nodiscard]] std::string
createRandom(uint16_t length = 32, std::string_view chars =
"0123456789_abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ");
131[[nodiscard]] std::string
padNumber(int64_t number,
int width);
133void normalizeSlashes(std::string& path,
bool stripSlashPrefix =
false,
bool stripSlashSuffix =
true);
135void denormalizeSlashes(std::string& path,
bool stripSlashPrefix =
false,
bool stripSlashSuffix =
true);
137bool toBool(std::string_view number,
bool& out,
int base = 10);
139[[nodiscard]]
bool isBool(std::string_view number,
int base = 10);
141bool toInt(std::string_view number, std::integral
auto& out,
int base = 10) {
142 const auto [ptr, err] = std::from_chars(number.data(), number.data() + number.size(), out, base);
143 return ptr == number.data() + number.size() && err == std::errc{};
146template<std::
integral T>
147[[nodiscard]]
bool isInt(std::string_view number,
int base = 10) {
149 return toInt(number, tmp, base);
152bool toFloat(std::string_view number, std::floating_point
auto& out) {
157 out = std::stof(std::string{number}, &pos);
158 return pos == number.size();
159 }
catch (
const std::invalid_argument&) {
160 }
catch (
const std::out_of_range&) {}
163 const auto [ptr, err] = std::from_chars(number.data(), number.data() + number.size(), out);
164 return ptr == number.data() + number.size() && err == std::errc{};
168template<std::
floating_po
int T>
169[[nodiscard]]
bool isFloat(std::string_view number) {
174[[nodiscard]] std::vector<std::byte>
decodeHex(std::string_view hex);
176[[nodiscard]] std::string
encodeHex(std::span<const std::byte> hex);