1
0
mirror of https://github.com/SerenityOS/serenity synced 2024-07-09 09:20:46 +00:00

AK: Add DeprecatedString::find_last(StringView)

This adds the the method DeprecatedString::find_last() as wrapper for
StringUtils::find_last for the StringView type.
This commit is contained in:
Agustin Gianni 2022-12-15 21:20:14 +00:00 committed by Andreas Kling
parent 03107d4028
commit 9a2ee5a9dd
4 changed files with 14 additions and 2 deletions

View File

@ -158,7 +158,7 @@ public:
[[nodiscard]] Optional<size_t> find(char needle, size_t start = 0) const { return StringUtils::find(*this, needle, start); }
[[nodiscard]] Optional<size_t> find(StringView needle, size_t start = 0) const { return StringUtils::find(*this, needle, start); }
[[nodiscard]] Optional<size_t> find_last(char needle) const { return StringUtils::find_last(*this, needle); }
// FIXME: Implement find_last(StringView) for API symmetry.
[[nodiscard]] Optional<size_t> find_last(StringView needle) const { return StringUtils::find_last(*this, needle); }
Vector<size_t> find_all(StringView needle) const;
using SearchDirection = StringUtils::SearchDirection;
[[nodiscard]] Optional<size_t> find_any_of(StringView needles, SearchDirection direction) const { return StringUtils::find_any_of(*this, needles, direction); }

View File

@ -405,6 +405,17 @@ Optional<size_t> find_last(StringView haystack, char needle)
return {};
}
Optional<size_t> find_last(StringView haystack, StringView needle)
{
for (size_t i = haystack.length(); i > 0; --i) {
auto value = StringUtils::find(haystack, needle, i - 1);
if (value.has_value())
return value;
}
return {};
}
Optional<size_t> find_last_not(StringView haystack, char needle)
{
for (size_t i = haystack.length(); i > 0; --i) {

View File

@ -90,6 +90,7 @@ StringView trim_whitespace(StringView string, TrimMode mode);
Optional<size_t> find(StringView haystack, char needle, size_t start = 0);
Optional<size_t> find(StringView haystack, StringView needle, size_t start = 0);
Optional<size_t> find_last(StringView haystack, char needle);
Optional<size_t> find_last(StringView haystack, StringView needle);
Optional<size_t> find_last_not(StringView haystack, char needle);
Vector<size_t> find_all(StringView haystack, StringView needle);
enum class SearchDirection {

View File

@ -116,8 +116,8 @@ public:
}
[[nodiscard]] Optional<size_t> find(StringView needle, size_t start = 0) const { return StringUtils::find(*this, needle, start); }
[[nodiscard]] Optional<size_t> find_last(char needle) const { return StringUtils::find_last(*this, needle); }
[[nodiscard]] Optional<size_t> find_last(StringView needle) const { return StringUtils::find_last(*this, needle); }
[[nodiscard]] Optional<size_t> find_last_not(char needle) const { return StringUtils::find_last_not(*this, needle); }
// FIXME: Implement find_last(StringView) for API symmetry.
[[nodiscard]] Vector<size_t> find_all(StringView needle) const;