diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-05-20 23:56:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-20 23:56:17 +0200 |
commit | bfe4af91a26787c11c3d4c84a216d6d728322035 (patch) | |
tree | b6c994cc1c4226f9c45b3e2d0e2b467a657b7bc1 /core/string | |
parent | 98071ec136bad8ede5f8c0505e6cff6f33f787ef (diff) | |
parent | b1859510ab0a3381e0a5bec3d896032fc5019147 (diff) |
Merge pull request #36180 from KoBeWi/I_broke_your_right
Change behavior of String.right
Diffstat (limited to 'core/string')
-rw-r--r-- | core/string/ustring.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp index bdb66526a4..3c1afc7f2c 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -3382,14 +3382,14 @@ String String::format(const Variant &values, String placeholder) const { if (value_arr.size() == 2) { Variant v_key = value_arr[0]; String key = v_key; - if (key.left(1) == "\"" && key.right(key.length() - 1) == "\"") { + if (key.left(1) == "\"" && key.right(1) == "\"") { key = key.substr(1, key.length() - 2); } Variant v_val = value_arr[1]; String val = v_val; - if (val.left(1) == "\"" && val.right(val.length() - 1) == "\"") { + if (val.left(1) == "\"" && val.right(1) == "\"") { val = val.substr(1, val.length() - 2); } @@ -3401,7 +3401,7 @@ String String::format(const Variant &values, String placeholder) const { Variant v_val = values_arr[i]; String val = v_val; - if (val.left(1) == "\"" && val.right(val.length() - 1) == "\"") { + if (val.left(1) == "\"" && val.right(1) == "\"") { val = val.substr(1, val.length() - 2); } @@ -3421,11 +3421,11 @@ String String::format(const Variant &values, String placeholder) const { String key = E->get(); String val = d[E->get()]; - if (key.left(1) == "\"" && key.right(key.length() - 1) == "\"") { + if (key.left(1) == "\"" && key.right(1) == "\"") { key = key.substr(1, key.length() - 2); } - if (val.left(1) == "\"" && val.right(val.length() - 1) == "\"") { + if (val.left(1) == "\"" && val.right(1) == "\"") { val = val.substr(1, val.length() - 2); } @@ -3529,6 +3529,10 @@ String String::repeat(int p_count) const { } String String::left(int p_pos) const { + if (p_pos < 0) { + p_pos = length() + p_pos; + } + if (p_pos <= 0) { return ""; } @@ -3541,15 +3545,19 @@ String String::left(int p_pos) const { } String String::right(int p_pos) const { - if (p_pos >= length()) { - return ""; + if (p_pos < 0) { + p_pos = length() + p_pos; } if (p_pos <= 0) { + return ""; + } + + if (p_pos >= length()) { return *this; } - return substr(p_pos, (length() - p_pos)); + return substr(length() - p_pos); } char32_t String::unicode_at(int p_idx) const { |