mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:47:44 +00:00
AK: Also add a keep_empty argument to String::split[_limit]()
Just like String[View]::split_view() has already.
This commit is contained in:
parent
9cbce68b1d
commit
6a64077ed7
2 changed files with 7 additions and 9 deletions
|
@ -131,12 +131,12 @@ StringView String::substring_view(size_t start, size_t length) const
|
||||||
return { characters() + start, length };
|
return { characters() + start, length };
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> String::split(const char separator) const
|
Vector<String> String::split(char separator, bool keep_empty) const
|
||||||
{
|
{
|
||||||
return split_limit(separator, 0);
|
return split_limit(separator, 0, keep_empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> String::split_limit(const char separator, size_t limit) const
|
Vector<String> String::split_limit(char separator, size_t limit, bool keep_empty) const
|
||||||
{
|
{
|
||||||
if (is_empty())
|
if (is_empty())
|
||||||
return {};
|
return {};
|
||||||
|
@ -147,16 +147,14 @@ Vector<String> String::split_limit(const char separator, size_t limit) const
|
||||||
char ch = characters()[i];
|
char ch = characters()[i];
|
||||||
if (ch == separator) {
|
if (ch == separator) {
|
||||||
size_t sublen = i - substart;
|
size_t sublen = i - substart;
|
||||||
if (sublen != 0)
|
if (sublen != 0 || keep_empty)
|
||||||
v.append(substring(substart, sublen));
|
v.append(substring(substart, sublen));
|
||||||
substart = i + 1;
|
substart = i + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
size_t taillen = length() - substart;
|
size_t taillen = length() - substart;
|
||||||
if (taillen != 0)
|
if (taillen != 0 || keep_empty)
|
||||||
v.append(substring(substart, taillen));
|
v.append(substring(substart, taillen));
|
||||||
if (characters()[length() - 1] == separator)
|
|
||||||
v.append(empty());
|
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -140,8 +140,8 @@ public:
|
||||||
|
|
||||||
bool contains(const String&) const;
|
bool contains(const String&) const;
|
||||||
|
|
||||||
Vector<String> split_limit(char separator, size_t limit) const;
|
Vector<String> split_limit(char separator, size_t limit, bool keep_empty = false) const;
|
||||||
Vector<String> split(char separator) const;
|
Vector<String> split(char separator, bool keep_empty = false) const;
|
||||||
String substring(size_t start, size_t length) const;
|
String substring(size_t start, size_t length) const;
|
||||||
|
|
||||||
Vector<StringView> split_view(char separator, bool keep_empty = false) const;
|
Vector<StringView> split_view(char separator, bool keep_empty = false) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue