diff options
author | Yuri Roubinski <chaosus89@gmail.com> | 2023-06-21 20:40:48 +0300 |
---|---|---|
committer | Yuri Roubinski <chaosus89@gmail.com> | 2023-06-21 20:40:48 +0300 |
commit | 230385b5875643c2e162e6c4d2a27aaef95e1cc8 (patch) | |
tree | 097b921e4ca343995af5c4cc4eec988c116ec4ff /core/string | |
parent | 28a60b3de02e8cfcc742a248078e6b7ee8f728b1 (diff) | |
download | redot-engine-230385b5875643c2e162e6c4d2a27aaef95e1cc8.tar.gz |
Add `String.reverse` method
Diffstat (limited to 'core/string')
-rw-r--r-- | core/string/ustring.cpp | 17 | ||||
-rw-r--r-- | core/string/ustring.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp index c276f20f99..6a77f077e5 100644 --- a/core/string/ustring.cpp +++ b/core/string/ustring.cpp @@ -3616,6 +3616,23 @@ String String::repeat(int p_count) const { return new_string; } +String String::reverse() const { + int len = length(); + if (len <= 1) { + return *this; + } + String new_string; + new_string.resize(len + 1); + + const char32_t *src = ptr(); + char32_t *dst = new_string.ptrw(); + for (int i = 0; i < len; i++) { + dst[i] = src[len - i - 1]; + } + dst[len] = _null; + return new_string; +} + String String::left(int p_len) const { if (p_len < 0) { p_len = length() + p_len; diff --git a/core/string/ustring.h b/core/string/ustring.h index 782ca47507..317fef6232 100644 --- a/core/string/ustring.h +++ b/core/string/ustring.h @@ -304,6 +304,7 @@ public: String replace(const char *p_key, const char *p_with) const; String replacen(const String &p_key, const String &p_with) const; String repeat(int p_count) const; + String reverse() const; String insert(int p_at_pos, const String &p_string) const; String erase(int p_pos, int p_chars = 1) const; String pad_decimals(int p_digits) const; |