From 6a64077ed7848501c1051fc1e90e9e270b639e20 Mon Sep 17 00:00:00 2001 From: Sergey Bugaev Date: Wed, 22 Jan 2020 17:17:27 +0300 Subject: [PATCH] AK: Also add a keep_empty argument to String::split[_limit]() Just like String[View]::split_view() has already. --- AK/String.cpp | 12 +++++------- AK/String.h | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/AK/String.cpp b/AK/String.cpp index c1a830f3f8..8922a2a543 100644 --- a/AK/String.cpp +++ b/AK/String.cpp @@ -131,12 +131,12 @@ StringView String::substring_view(size_t start, size_t length) const return { characters() + start, length }; } -Vector String::split(const char separator) const +Vector String::split(char separator, bool keep_empty) const { - return split_limit(separator, 0); + return split_limit(separator, 0, keep_empty); } -Vector String::split_limit(const char separator, size_t limit) const +Vector String::split_limit(char separator, size_t limit, bool keep_empty) const { if (is_empty()) return {}; @@ -147,16 +147,14 @@ Vector String::split_limit(const char separator, size_t limit) const char ch = characters()[i]; if (ch == separator) { size_t sublen = i - substart; - if (sublen != 0) + if (sublen != 0 || keep_empty) v.append(substring(substart, sublen)); substart = i + 1; } } size_t taillen = length() - substart; - if (taillen != 0) + if (taillen != 0 || keep_empty) v.append(substring(substart, taillen)); - if (characters()[length() - 1] == separator) - v.append(empty()); return v; } diff --git a/AK/String.h b/AK/String.h index 0f7a716192..62e82b6180 100644 --- a/AK/String.h +++ b/AK/String.h @@ -140,8 +140,8 @@ public: bool contains(const String&) const; - Vector split_limit(char separator, size_t limit) const; - Vector split(char separator) const; + Vector split_limit(char separator, size_t limit, bool keep_empty = false) const; + Vector split(char separator, bool keep_empty = false) const; String substring(size_t start, size_t length) const; Vector split_view(char separator, bool keep_empty = false) const;