feat add EqualsIgnoreCase,StartsWithIgnoreCase,EndsWithIgnoreCase
This commit is contained in:
parent
9b1de49188
commit
84688ebd24
@ -11,19 +11,18 @@ char ToUpper(char c);
|
|||||||
std::string ToLower(const std::string &str);
|
std::string ToLower(const std::string &str);
|
||||||
std::string ToUpper(const std::string &str);
|
std::string ToUpper(const std::string &str);
|
||||||
std::string ToHex(const std::string &str);
|
std::string ToHex(const std::string &str);
|
||||||
std::string StrJoin(const std::vector<std::string> &strings,
|
std::string StrJoin(const std::vector<std::string> &strings, const std::string &delim, bool skip_empty = false);
|
||||||
const std::string &delim,
|
std::vector<std::string> StrSplit(const std::string &str, const std::string &delim, bool skip_empty = false);
|
||||||
bool skip_empty = false);
|
|
||||||
std::vector<std::string> StrSplit(const std::string &str,
|
|
||||||
const std::string &delim,
|
|
||||||
bool skip_empty = false);
|
|
||||||
std::string Trim(const std::string &str, const std::string &chars = " \t\n\r");
|
std::string Trim(const std::string &str, const std::string &chars = " \t\n\r");
|
||||||
std::string TrimLeft(const std::string &str,
|
std::string TrimLeft(const std::string &str, const std::string &chars = " \t\n\r");
|
||||||
const std::string &chars = " \t\n\r");
|
std::string TrimRight(const std::string &str, const std::string &chars = " \t\n\r");
|
||||||
std::string TrimRight(const std::string &str,
|
|
||||||
const std::string &chars = " \t\n\r");
|
|
||||||
bool EndsWith(const std::string &str, const std::string &suffix);
|
bool EndsWith(const std::string &str, const std::string &suffix);
|
||||||
bool StartsWith(const std::string &str, const std::string &prefix);
|
bool StartsWith(const std::string &str, const std::string &prefix);
|
||||||
|
|
||||||
|
bool EndsWithIgnoreCase(const std::string &str, const std::string &suffix);
|
||||||
|
bool StartsWithIgnoreCase(const std::string &str, const std::string &prefix);
|
||||||
|
|
||||||
|
bool EqualsIgnoreCase(const std::string &lhs, const std::string &rhs);
|
||||||
|
|
||||||
}// namespace sled
|
}// namespace sled
|
||||||
#endif// SLED_STRINGS_UTILS_H
|
#endif// SLED_STRINGS_UTILS_H
|
||||||
|
@ -33,9 +33,7 @@ ToUpper(const std::string &str)
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string
|
std::string
|
||||||
StrJoin(const std::vector<std::string> &strings,
|
StrJoin(const std::vector<std::string> &strings, const std::string &delim, bool skip_empty)
|
||||||
const std::string &delim,
|
|
||||||
bool skip_empty)
|
|
||||||
{
|
{
|
||||||
if (strings.empty()) { return ""; }
|
if (strings.empty()) { return ""; }
|
||||||
|
|
||||||
@ -59,9 +57,7 @@ StrSplit(const std::string &str, const std::string &delim, bool skip_empty)
|
|||||||
size_t start = 0;
|
size_t start = 0;
|
||||||
size_t next_pos = str.find_first_of(delim, start);
|
size_t next_pos = str.find_first_of(delim, start);
|
||||||
while (next_pos != std::string::npos) {
|
while (next_pos != std::string::npos) {
|
||||||
if (!skip_empty || next_pos > start) {
|
if (!skip_empty || next_pos > start) { result.emplace_back(str.substr(start, next_pos - start)); }
|
||||||
result.emplace_back(str.substr(start, next_pos - start));
|
|
||||||
}
|
|
||||||
start = next_pos + 1;
|
start = next_pos + 1;
|
||||||
next_pos = str.find_first_of(delim, start);
|
next_pos = str.find_first_of(delim, start);
|
||||||
}
|
}
|
||||||
@ -93,15 +89,31 @@ TrimRight(const std::string &str, const std::string &chars)
|
|||||||
bool
|
bool
|
||||||
EndsWith(const std::string &str, const std::string &suffix)
|
EndsWith(const std::string &str, const std::string &suffix)
|
||||||
{
|
{
|
||||||
return str.size() >= suffix.size()
|
return str.size() >= suffix.size() && str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0;
|
||||||
&& str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
StartsWith(const std::string &str, const std::string &prefix)
|
StartsWith(const std::string &str, const std::string &prefix)
|
||||||
{
|
{
|
||||||
return str.size() >= prefix.size()
|
return str.size() >= prefix.size() && str.compare(0, prefix.size(), prefix) == 0;
|
||||||
&& str.compare(0, prefix.size(), prefix) == 0;
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
EndsWithIgnoreCase(const std::string &str, const std::string &suffix)
|
||||||
|
{
|
||||||
|
return EndsWith(ToLower(str), ToLower(suffix));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
StartsWithIgnoreCase(const std::string &str, const std::string &prefix)
|
||||||
|
{
|
||||||
|
return StartsWith(ToLower(str), ToLower(prefix));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
EqualsIgnoreCase(const std::string &lhs, const std::string &rhs)
|
||||||
|
{
|
||||||
|
return ToLower(lhs) == ToLower(rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
}// namespace sled
|
}// namespace sled
|
||||||
|
Loading…
Reference in New Issue
Block a user