geode/loader/include/Geode/utils/string.hpp

75 lines
2.5 KiB
C++
Raw Normal View History

2022-07-30 12:24:03 -04:00
#pragma once
#include <Geode/DefaultInclude.hpp>
2022-10-30 14:59:20 -04:00
#include <functional>
2022-07-30 12:24:03 -04:00
#include <string>
#include <vector>
#include <compare>
2022-07-30 12:24:03 -04:00
namespace geode::utils::string {
/**
* Convert std::wstring to std::string (UTF-8)
* @param str String to convert
* @returns std::string
*/
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string wideToUtf8(std::wstring const& str);
/**
* Convert std::string (UTF-8) to std::wstring
* @param str String to convert
* @returns std::wstring
*/
2022-10-30 14:59:20 -04:00
GEODE_DLL std::wstring utf8ToWide(std::string const& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string& toLowerIP(std::string& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string toLower(std::string const& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string& toUpperIP(std::string& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string toUpper(std::string const& str);
GEODE_DLL std::string& replaceIP(
2022-10-30 14:59:20 -04:00
std::string& str, std::string const& orig, std::string const& repl
);
GEODE_DLL std::string replace(
2022-10-30 14:59:20 -04:00
std::string const& str, std::string const& orig, std::string const& repl
);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::vector<std::string> split(std::string const& str, std::string const& split);
2023-08-06 18:47:14 -04:00
GEODE_DLL std::string join(std::vector<std::string> const& strs, std::string const& separator);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::vector<char> split(std::string const& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL bool contains(std::string const& str, std::string const& subs);
2022-10-30 14:59:20 -04:00
GEODE_DLL bool contains(std::string const& str, char c);
2022-10-30 14:59:20 -04:00
GEODE_DLL bool containsAny(std::string const& str, std::vector<std::string> const& subs);
2022-10-30 14:59:20 -04:00
GEODE_DLL bool containsAll(std::string const& str, std::vector<std::string> const& subs);
2022-10-30 14:59:20 -04:00
GEODE_DLL size_t count(std::string const& str, char c);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string& trimLeftIP(std::string& str);
GEODE_DLL std::string& trimRightIP(std::string& str);
GEODE_DLL std::string& trimIP(std::string& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string trimLeft(std::string const& str);
GEODE_DLL std::string trimRight(std::string const& str);
GEODE_DLL std::string trim(std::string const& str);
2022-10-30 14:59:20 -04:00
GEODE_DLL std::string& normalizeIP(std::string& str);
GEODE_DLL std::string normalize(std::string const& str);
GEODE_DLL bool startsWith(std::string const& str, std::string const& prefix);
GEODE_DLL bool endsWith(std::string const& str, std::string const& suffix);
/**
* Similar to strcmp, but case insensitive.
* Uses std::tolower, but could change in the future for better locale support
*/
GEODE_DLL std::strong_ordering caseInsensitiveCompare(std::string_view a, std::string_view b);
2022-07-30 12:24:03 -04:00
}