optimize StartsWith,EndsWith

This commit is contained in:
tqcq
2024-03-04 18:20:17 +08:00
parent f31657640f
commit fcce11249b
2 changed files with 62 additions and 11 deletions

View File

@@ -50,22 +50,15 @@ Trim(const std::string &str, const std::string &chars)
std::string
TrimLeft(const std::string &str, const std::string &chars)
{
size_t start = 0;
while (start < str.size()
&& chars.find_first_of(str[start]) != std::string::npos) {
++start;
}
return str.substr(start);
size_t start = str.find_first_not_of(chars);
return start == std::string::npos ? "" : str.substr(start);
}
std::string
TrimRight(const std::string &str, const std::string &chars)
{
size_t end = str.size();
while (end > 0 && chars.find_first_of(str[end - 1]) != std::string::npos) {
--end;
}
return str.substr(0, end);
size_t end = str.find_last_not_of(chars);
return end == std::string::npos ? "" : str.substr(0, end + 1);
}
bool