Merge pull request #72547 from MewPurPur/string-split-fix

Fix String.split() with empty string and delimeter
This commit is contained in:
Rémi Verschelde 2023-02-09 16:12:57 +01:00
commit ab4a7b2b77
No known key found for this signature in database
GPG Key ID: C3336907360768E1
2 changed files with 16 additions and 0 deletions

View File

@ -1157,6 +1157,14 @@ Vector<String> String::split_spaces() const {
Vector<String> String::split(const String &p_splitter, bool p_allow_empty, int p_maxsplit) const { Vector<String> String::split(const String &p_splitter, bool p_allow_empty, int p_maxsplit) const {
Vector<String> ret; Vector<String> ret;
if (is_empty()) {
if (p_allow_empty) {
ret.push_back("");
}
return ret;
}
int from = 0; int from = 0;
int len = length(); int len = length();

View File

@ -512,6 +512,14 @@ TEST_CASE("[String] Splitting") {
CHECK(l[i] == slices_3[i]); CHECK(l[i] == slices_3[i]);
} }
s = "";
l = s.split();
CHECK(l.size() == 1);
CHECK(l[0] == "");
l = s.split("", false);
CHECK(l.size() == 0);
s = "Mars Jupiter Saturn Uranus"; s = "Mars Jupiter Saturn Uranus";
const char *slices_s[4] = { "Mars", "Jupiter", "Saturn", "Uranus" }; const char *slices_s[4] = { "Mars", "Jupiter", "Saturn", "Uranus" };
l = s.split_spaces(); l = s.split_spaces();