From 154871834b60a6979bf945610e2032d8b606479e Mon Sep 17 00:00:00 2001 From: Hendiadyoin1 Date: Sat, 18 Jun 2022 18:35:36 +0200 Subject: [PATCH] AK: Add a helper to get the last split-group --- AK/String.h | 2 ++ AK/StringView.h | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/AK/String.h b/AK/String.h index e245e5ffd41..29682bc5efa 100644 --- a/AK/String.h +++ b/AK/String.h @@ -159,6 +159,8 @@ public: using SearchDirection = StringUtils::SearchDirection; [[nodiscard]] Optional find_any_of(StringView needles, SearchDirection direction) const { return StringUtils::find_any_of(*this, needles, direction); } + [[nodiscard]] StringView find_last_split_view(char separator) const { return view().find_last_split_view(separator); } + [[nodiscard]] String substring(size_t start, size_t length) const; [[nodiscard]] String substring(size_t start) const; [[nodiscard]] StringView substring_view(size_t start, size_t length) const; diff --git a/AK/StringView.h b/AK/StringView.h index 457fefbf634..17f0623f8c8 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -127,6 +127,14 @@ public: [[nodiscard]] Vector split_view_if(Function const& predicate, bool keep_empty = false) const; + [[nodiscard]] StringView find_last_split_view(char separator) const + { + auto begin = find_last(separator); + if (!begin.has_value()) + return *this; + return substring_view(begin.release_value() + 1); + } + template Callback> void for_each_split_view(char separator, bool keep_empty, Callback callback) const {