From e5725c7debd025be9f7b475527324b4b934fed58 Mon Sep 17 00:00:00 2001 From: kobewi Date: Sun, 31 Oct 2021 15:36:16 +0100 Subject: [PATCH] Expose String.get_slice --- core/variant/variant_call.cpp | 1 + doc/classes/String.xml | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp index ec3a6a5ca8e..2b1d3309426 100644 --- a/core/variant/variant_call.cpp +++ b/core/variant/variant_call.cpp @@ -1366,6 +1366,7 @@ static void _register_variant_builtin_methods() { bind_method(String, naturalnocasecmp_to, sarray("to"), varray()); bind_method(String, length, sarray(), varray()); bind_method(String, substr, sarray("from", "len"), varray(-1)); + bind_method(String, get_slice, sarray("delimiter", "slice"), varray()); bind_methodv(String, find, static_cast(&String::find), sarray("what", "from"), varray(0)); bind_method(String, count, sarray("what", "from", "to"), varray(0, 0)); bind_method(String, countn, sarray("what", "from", "to"), varray(0, 0)); diff --git a/doc/classes/String.xml b/doc/classes/String.xml index abb68e0d056..bd94065db11 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -200,6 +200,19 @@ If the string is a valid file path, returns the filename. + + + + + + Splits a string using a [code]delimiter[/code] and returns a substring at index [code]slice[/code]. Returns an empty string if the index doesn't exist. + This is a more performant alternative to [method split] for cases when you need only one element from the array at a fixed index. + Example: + [codeblock] + print("i/am/example/string".get_slice("/", 2)) # Prints 'example'. + [/codeblock] + + @@ -676,6 +689,7 @@ Splits the string by a [code]delimiter[/code] string and returns an array of the substrings. The [code]delimiter[/code] can be of any length. If [code]maxsplit[/code] is specified, it defines the number of splits to do from the left up to [code]maxsplit[/code]. The default value of [code]0[/code] means that all items are split. + If you need only one element from the array at a specific index, [method get_slice] is a more performant option. Example: [codeblocks] [gdscript]