StringΒΆ
Built-in string class.
DescriptionΒΆ
This is the built-in string class (and the one used by GDScript). It supports Unicode and provides all necessary means for string handling. Strings are reference-counted and use a copy-on-write approach, so passing them around is cheap in resources.
TutorialsΒΆ
ConstructorsΒΆ
String ( ) |
|
String ( StringName from ) |
MethodsΒΆ
begins_with ( String text ) const |
|
bigrams ( ) const |
|
bin_to_int ( ) const |
|
c_escape ( ) const |
|
c_unescape ( ) const |
|
capitalize ( ) const |
|
casecmp_to ( String to ) const |
|
dedent ( ) const |
|
get_base_dir ( ) const |
|
get_basename ( ) const |
|
get_extension ( ) const |
|
get_file ( ) const |
|
get_slice_count ( String delimiter ) const |
|
get_slicec ( int delimiter, int slice ) const |
|
hash ( ) const |
|
hex_to_int ( ) const |
|
humanize_size ( int size ) static |
|
is_absolute_path ( ) const |
|
is_empty ( ) const |
|
is_relative_path ( ) const |
|
is_subsequence_of ( String text ) const |
|
is_subsequence_ofn ( String text ) const |
|
is_valid_filename ( ) const |
|
is_valid_float ( ) const |
|
is_valid_hex_number ( bool with_prefix=false ) const |
|
is_valid_html_color ( ) const |
|
is_valid_identifier ( ) const |
|
is_valid_int ( ) const |
|
is_valid_ip_address ( ) const |
|
join ( PackedStringArray parts ) const |
|
json_escape ( ) const |
|
length ( ) const |
|
md5_buffer ( ) const |
|
md5_text ( ) const |
|
naturalnocasecmp_to ( String to ) const |
|
nocasecmp_to ( String to ) const |
|
num_scientific ( float number ) static |
|
pad_decimals ( int digits ) const |
|
rsplit ( String delimiter, bool allow_empty=true, int maxsplit=0 ) const |
|
sha1_buffer ( ) const |
|
sha1_text ( ) const |
|
sha256_buffer ( ) const |
|
sha256_text ( ) const |
|
similarity ( String text ) const |
|
simplify_path ( ) const |
|
split ( String delimiter, bool allow_empty=true, int maxsplit=0 ) const |
|
split_floats ( String delimiter, bool allow_empty=true ) const |
|
strip_edges ( bool left=true, bool right=true ) const |
|
strip_escapes ( ) const |
|
to_ascii_buffer ( ) const |
|
to_float ( ) const |
|
to_int ( ) const |
|
to_lower ( ) const |
|
to_upper ( ) const |
|
to_utf16_buffer ( ) const |
|
to_utf32_buffer ( ) const |
|
to_utf8_buffer ( ) const |
|
trim_prefix ( String prefix ) const |
|
trim_suffix ( String suffix ) const |
|
unicode_at ( int at ) const |
|
uri_decode ( ) const |
|
uri_encode ( ) const |
|
validate_node_name ( ) const |
|
xml_escape ( bool escape_quotes=false ) const |
|
xml_unescape ( ) const |
OperatorsΒΆ
operator != ( ) |
|
operator != ( String right ) |
|
operator != ( StringName right ) |
|
operator % ( Variant right ) |
|
operator + ( String right ) |
|
operator ( String right ) |
|
operator ( String right ) |
|
operator == ( ) |
|
operator == ( String right ) |
|
operator == ( StringName right ) |
|
operator > ( String right ) |
|
operator >= ( String right ) |
|
operator [] ( int index ) |
Constructor DescriptionsΒΆ
String String ( )
Constructs an empty String
(""
).
Constructs a String
as a copy of the given String
.
Constructs a new String from the given NodePath.
String String ( StringName from )
Constructs a new String from the given StringName.
Method DescriptionsΒΆ
Returns true
if the string begins with the given string.
PackedStringArray bigrams ( ) const
Returns an array containing the bigrams (pairs of consecutive letters) of this string.
print("Bigrams".bigrams()) # Prints "[Bi, ig, gr, ra, am, ms]"
int bin_to_int ( ) const
Converts a string containing a binary number into an integer. Binary strings can either be prefixed with 0b
or not, and they can also start with a -
before the optional prefix.
print("0b101".bin_to_int()) # Prints "5".
print("101".bin_to_int()) # Prints "5".
GD.Print("0b101".BinToInt()); // Prints "5".
GD.Print("101".BinToInt()); // Prints "5".
String c_escape ( ) const
Returns a copy of the string with special characters escaped using the C language standard.
String c_unescape ( ) const
Returns a copy of the string with escaped characters replaced by their meanings. Supported escape sequences are \'
, \"
, \?
, \\
, \a
, \b
, \f
, \n
, \r
, \t
, \v
.
Note: Unlike the GDScript parser, this method doesn't support the \uXXXX
escape sequence.
String capitalize ( ) const
Changes the case of some letters. Replaces underscores with spaces, adds spaces before in-word uppercase characters, converts all letters to lowercase, then capitalizes the first letter and every letter following a space character. For capitalize camelCase mixed_with_underscores
, it will return Capitalize Camel Case Mixed With Underscores
.
Performs a case-sensitive comparison to another string. Returns -1
if less than, 1
if greater than, or 0
if equal. "less than" or "greater than" are determined by the Unicode code points of each string, which roughly matches the alphabetical order.
Behavior with different string lengths: Returns 1
if the "base" string is longer than the to
string or -1
if the "base" string is shorter than the to
string. Keep in mind this length is determined by the number of Unicode codepoints, not the actual visible characters.
Behavior with empty strings: Returns -1
if the "base" string is empty, 1
if the to
string is empty or 0
if both strings are empty.
To get a boolean result from a string comparison, use the ==
operator instead. See also nocasecmp_to and naturalnocasecmp_to.
Directly converts an decimal integer to a unicode character. Tables of these characters can be found in various locations, for example here.
print(String.chr(65)) # Prints "A"
print(String.chr(129302)) # Prints "π€" (robot face emoji)
Returns true
if the string contains the given string.
Returns the number of occurrences of substring what
between from
and to
positions. If from
and to
equals 0 the whole string will be used. If only to
equals 0 the remained substring will be used.
Returns the number of occurrences of substring what
(ignoring case) between from
and to
positions. If from
and to
equals 0 the whole string will be used. If only to
equals 0 the remained substring will be used.
String dedent ( ) const
Returns a copy of the string with indentation (leading tabs and spaces) removed. See also indent to add indentation.
Returns true
if the string ends with the given string.
Returns the index of the first case-sensitive occurrence of the specified string in this instance, or -1
. Optionally, the starting search index can be specified, continuing to the end of the string.
Note: If you just want to know whether a string contains a substring, use the in
operator as follows:
print("i" in "team") # Will print `false`.
// C# has no in operator, but we can use `Contains()`.
GD.Print("team".Contains("i")); // Will print `false`.
Returns the index of the first case-insensitive occurrence of the specified string in this instance, or -1
. Optionally, the starting search index can be specified, continuing to the end of the string.
Formats the string by replacing all occurrences of placeholder
with values
.
String get_base_dir ( ) const
If the string is a valid file path, returns the base directory name.
String get_basename ( ) const
If the string is a valid file path, returns the full file path without the extension.
String get_extension ( ) const
Returns the extension without the leading period character (.
) if the string is a valid file name or path. If the string does not contain an extension, returns an empty string instead.
print("/path/to/file.txt".get_extension()) # "txt"
print("file.txt".get_extension()) # "txt"
print("file.sample.txt".get_extension()) # "txt"
print(".txt".get_extension()) # "txt"
print("file.txt.".get_extension()) # "" (empty string)
print("file.txt..".get_extension()) # "" (empty string)
print("txt".get_extension()) # "" (empty string)
print("".get_extension()) # "" (empty string)
String get_file ( ) const
If the string is a valid file path, returns the filename.
Splits a string using a delimiter
and returns a substring at index slice
. Returns an empty string if the index doesn't exist.
This is a more performant alternative to split for cases when you need only one element from the array at a fixed index.
Example:
print("i/am/example/string".get_slice("/", 2)) # Prints 'example'.
Splits a string using a delimiter
and returns a number of slices.
Splits a string using a Unicode character with code delimiter
and returns a substring at index slice
. Returns an empty string if the index doesn't exist.
This is a more performant alternative to split for cases when you need only one element from the array at a fixed index.
int hash ( ) const
Returns the 32-bit hash value representing the string's contents.
Note: String
s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does not imply the strings are equal, because different strings can have identical hash values due to hash collisions.
int hex_to_int ( ) const
Converts a string containing a hexadecimal number into an integer. Hexadecimal strings can either be prefixed with 0x
or not, and they can also start with a -
before the optional prefix.
print("0xff".hex_to_int()) # Prints "255".
print("ab".hex_to_int()) # Prints "171".
GD.Print("0xff".HexToInt()); // Prints "255".
GD.Print("ab".HexToInt()); // Prints "171".
Converts an integer representing a number of bytes into a human-readable form.
Note that this output is in IEC prefix format, and includes B
, KiB
, MiB
, GiB
, TiB
, PiB
, and EiB
.
Returns a copy of the string with lines indented with prefix
.
For example, the string can be indented with two tabs using "\t\t"
, or four spaces using " "
. The prefix can be any string so it can also be used to comment out strings with e.g. "# "
. See also dedent to remove indentation.
Note: Empty lines are kept empty.
Returns a copy of the string with the substring what
inserted at the given position.
bool is_absolute_path ( ) const
Returns true
if the string is a path to a file or directory and its starting point is explicitly defined. This includes res://
, user://
, C:\
, /
, etc.
bool is_empty ( ) const
Returns true
if the length of the string equals 0
.
bool is_relative_path ( ) const
Returns true
if the string is a path to a file or directory and its starting point is implicitly defined within the context it is being used. The starting point may refer to the current directory (./
), or the current Node.
Returns true
if this string is a subsequence of the given string.
Returns true
if this string is a subsequence of the given string, without considering case.
bool is_valid_filename ( ) const
Returns true
if this string is free from characters that aren't allowed in file names, those being:
: / \ ? * " | % < >
bool is_valid_float ( ) const
Returns true
if this string contains a valid float. This is inclusive of integers, and also supports exponents:
print("1.7".is_valid_float()) # Prints "true"
print("24".is_valid_float()) # Prints "true"
print("7e3".is_valid_float()) # Prints "true"
print("24".is_valid_float()) # Prints "true"
print("Hello".is_valid_float()) # Prints "false"
Returns true
if this string contains a valid hexadecimal number. If with_prefix
is true
, then a validity of the hexadecimal number is determined by 0x
prefix, for instance: 0xDEADC0DE
.
bool is_valid_html_color ( ) const
Returns true
if this string contains a valid color in hexadecimal HTML notation. Other HTML notations such as named colors or hsl()
colors aren't considered valid by this method and will return false
.
bool is_valid_identifier ( ) const
Returns true
if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores (_
) and the first character may not be a digit.
print("good_ident_1".is_valid_identifier()) # Prints "true"
print("1st_bad_ident".is_valid_identifier()) # Prints "false"
print("bad_ident_#2".is_valid_identifier()) # Prints "false"
bool is_valid_int ( ) const
Returns true
if this string contains a valid integer.
print("7".is_valid_int()) # Prints "true"
print("14.6".is_valid_int()) # Prints "false"
print("L".is_valid_int()) # Prints "false"
print("+3".is_valid_int()) # Prints "true"
print("-12".is_valid_int()) # Prints "true"
bool is_valid_ip_address ( ) const
Returns true
if this string contains only a well-formatted IPv4 or IPv6 address. This method considers reserved IP addresses such as 0.0.0.0
as valid.
String join ( PackedStringArray parts ) const
Returns a String
which is the concatenation of the parts
. The separator between elements is the string providing this method.
Example:
print(", ".join(["One", "Two", "Three", "Four"]))
GD.Print(String.Join(",", new string[] {"One", "Two", "Three", "Four"}));
String json_escape ( ) const
Returns a copy of the string with special characters escaped using the JSON standard.
Returns a number of characters from the left of the string. If negative position
is used, the characters are counted downwards from String
's length.
Examples:
print("sample text".left(3)) #prints "sam"
print("sample text".left(-3)) #prints "sample t"
int length ( ) const
Returns the string's amount of characters.
Formats a string to be at least min_length
long by adding character
s to the left of the string.
Returns a copy of the string with characters removed from the left. The chars
argument is a string specifying the set of characters to be removed.
Note: The chars
is not a prefix. See trim_prefix method that will remove a single prefix string rather than a set of characters.
Does a simple case-sensitive expression match, where "*"
matches zero or more arbitrary characters and "?"
matches any single character except a period ("."
). An empty string or empty expression always evaluates to false
.
Does a simple case-insensitive expression match, where "*"
matches zero or more arbitrary characters and "?"
matches any single character except a period ("."
). An empty string or empty expression always evaluates to false
.
PackedByteArray md5_buffer ( ) const
Returns the MD5 hash of the string as an array of bytes.
String md5_text ( ) const
Returns the MD5 hash of the string as a string.
Performs a case-insensitive natural order comparison to another string. Returns -1
if less than, 1
if greater than, or 0
if equal. "less than" or "greater than" are determined by the Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters will be converted to uppercase during the comparison.
When used for sorting, natural order comparison will order suites of numbers as expected by most people. If you sort the numbers from 1 to 10 using natural order, you will get [1, 2, 3, ...]
instead of [1, 10, 2, 3, ...]
.
Behavior with different string lengths: Returns 1
if the "base" string is longer than the to
string or -1
if the "base" string is shorter than the to
string. Keep in mind this length is determined by the number of Unicode codepoints, not the actual visible characters.
Behavior with empty strings: Returns -1
if the "base" string is empty, 1
if the to
string is empty or 0
if both strings are empty.
To get a boolean result from a string comparison, use the ==
operator instead. See also nocasecmp_to and casecmp_to.
Performs a case-insensitive comparison to another string. Returns -1
if less than, 1
if greater than, or 0
if equal. "less than" or "greater than" are determined by the Unicode code points of each string, which roughly matches the alphabetical order. Internally, lowercase characters will be converted to uppercase during the comparison.
Behavior with different string lengths: Returns 1
if the "base" string is longer than the to
string or -1
if the "base" string is shorter than the to
string. Keep in mind this length is determined by the number of Unicode codepoints, not the actual visible characters.
Behavior with empty strings: Returns -1
if the "base" string is empty, 1
if the to
string is empty or 0
if both strings are empty.
To get a boolean result from a string comparison, use the ==
operator instead. See also casecmp_to and naturalnocasecmp_to.
Converts a float to a string representation of a decimal number.
The number of decimal places can be specified with decimals
. If decimals
is -1
(default), decimal places will be automatically adjusted so that the string representation has 14 significant digits (counting both digits to the left and the right of the decimal point).
Trailing zeros are not included in the string. The last digit will be rounded and not truncated.
Some examples:
String.num(3.141593) # "3.141593"
String.num(3.141593, 3) # "3.142"
String.num(3.14159300) # "3.141593", no trailing zeros.
# Last digit will be rounded up here, which reduces total digit count since
# trailing zeros are removed:
String.num(42.129999, 5) # "42.13"
# If `decimals` is not specified, the total amount of significant digits is 14:
String.num(-0.0000012345432123454321) # "-0.00000123454321"
String.num(-10000.0000012345432123454321) # "-10000.0000012345"
Formats a number to have an exact number of digits
after the decimal point.
Formats a number to have an exact number of digits
before the decimal point.
If the string is a path, this concatenates file
at the end of the string as a subpath. E.g. "this/is".plus_file("path") == "this/is/path"
.
Returns original string repeated a number of times. The number of repetitions is given by the argument.
Replaces occurrences of a case-sensitive substring with the given one inside the string.
Replaces occurrences of a case-insensitive substring with the given one inside the string.
Returns the index of the last case-sensitive occurrence of the specified string in this instance, or -1
. Optionally, the starting search index can be specified, continuing to the beginning of the string.
Returns the index of the last case-insensitive occurrence of the specified string in this instance, or -1
. Optionally, the starting search index can be specified, continuing to the beginning of the string.
Returns a number of characters from the right of the string. If negative position
is used, the characters are counted downwards from String
's length.
Examples:
print("sample text".right(3)) #prints "ext"
print("sample text".right(-3)) #prints "ple text"
Formats a string to be at least min_length
long by adding character
s to the right of the string.
PackedStringArray rsplit ( String delimiter, bool allow_empty=true, int maxsplit=0 ) const
Splits the string by a delimiter
string and returns an array of the substrings, starting from right.
The splits in the returned array are sorted in the same order as the original string, from left to right.
If maxsplit
is specified, it defines the number of splits to do from the right up to maxsplit
. The default value of 0 means that all items are split, thus giving the same result as split.
Example:
var some_string = "One,Two,Three,Four"
var some_array = some_string.rsplit(",", true, 1)
print(some_array.size()) # Prints 2
print(some_array[0]) # Prints "Four"
print(some_array[1]) # Prints "Three,Two,One"
// There is no Rsplit.
Returns a copy of the string with characters removed from the right. The chars
argument is a string specifying the set of characters to be removed.
Note: The chars
is not a suffix. See trim_suffix method that will remove a single suffix string rather than a set of characters.
PackedByteArray sha1_buffer ( ) const
Returns the SHA-1 hash of the string as an array of bytes.
String sha1_text ( ) const
Returns the SHA-1 hash of the string as a string.
PackedByteArray sha256_buffer ( ) const
Returns the SHA-256 hash of the string as an array of bytes.
String sha256_text ( ) const
Returns the SHA-256 hash of the string as a string.
Returns the similarity index (Sorensen-Dice coefficient) this string compared to another. 1.0 means totally similar and 0.0 means totally dissimilar.
print("ABC123".similarity("ABC123")) # Prints "1"
print("ABC123".similarity("XYZ456")) # Prints "0"
print("ABC123".similarity("123ABC")) # Prints "0.8"
print("ABC123".similarity("abc123")) # Prints "0.4"
String simplify_path ( ) const
Returns a simplified canonical path.
PackedStringArray split ( String delimiter, bool allow_empty=true, int maxsplit=0 ) const
Splits the string by a delimiter
string and returns an array of the substrings. The delimiter
can be of any length.
If maxsplit
is specified, it defines the number of splits to do from the left up to maxsplit
. The default value of 0
means that all items are split.
If you need only one element from the array at a specific index, get_slice is a more performant option.
Example:
var some_string = "One,Two,Three,Four"
var some_array = some_string.split(",", true, 1)
print(some_array.size()) # Prints 2
print(some_array[0]) # Prints "Four"
print(some_array[1]) # Prints "Three,Two,One"
var someString = "One,Two,Three,Four";
var someArray = someString.Split(",", true); // This is as close as it gets to Godots API.
GD.Print(someArray[0]); // Prints "Four"
GD.Print(someArray[1]); // Prints "Three,Two,One"
If you need to split strings with more complex rules, use the RegEx class instead.
PackedFloat32Array split_floats ( String delimiter, bool allow_empty=true ) const
Splits the string in floats by using a delimiter string and returns an array of the substrings.
For example, "1,2.5,3"
will return [1,2.5,3]
if split by ","
.
Returns a copy of the string stripped of any non-printable character (including tabulations, spaces and line breaks) at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively.
String strip_escapes ( ) const
Returns a copy of the string stripped of any escape character. These include all non-printable control characters of the first page of the ASCII table (< 32), such as tabulation (\t
in C) and newline (\n
and \r
) characters, but not spaces.
Returns part of the string from the position from
with length len
. Argument len
is optional and using -1
will return remaining characters from given position.
PackedByteArray to_ascii_buffer ( ) const
Converts the String (which is a character array) to ASCII/Latin-1 encoded PackedByteArray (which is an array of bytes). The conversion is faster compared to to_utf8_buffer, as this method assumes that all the characters in the String are ASCII/Latin-1 characters, unsupported characters are replaced with spaces.
float to_float ( ) const
Converts a string containing a decimal number into a float
. The method will stop on the first non-number character except the first .
(decimal point), and e
which is used for exponential.
print("12.3".to_float()) # 12.3
print("1.2.3".to_float()) # 1.2
print("12ab3".to_float()) # 12
print("1e3".to_float()) # 1000
int to_int ( ) const
Converts a string containing an integer number into an int
. The method will remove any non-number character and stop if it encounters a .
.
print("123".to_int()) # 123
print("a1b2c3".to_int()) # 123
print("1.2.3".to_int()) # 1
String to_lower ( ) const
Returns the string converted to lowercase.
String to_upper ( ) const
Returns the string converted to uppercase.
PackedByteArray to_utf16_buffer ( ) const
Converts the String (which is an array of characters) to UTF-16 encoded PackedByteArray (which is an array of bytes).
PackedByteArray to_utf32_buffer ( ) const
Converts the String (which is an array of characters) to UTF-32 encoded PackedByteArray (which is an array of bytes).
PackedByteArray to_utf8_buffer ( ) const
Converts the String (which is an array of characters) to UTF-8 encode PackedByteArray (which is an array of bytes). The conversion is a bit slower than to_ascii_buffer, but supports all UTF-8 characters. Therefore, you should prefer this function over to_ascii_buffer.
Removes a given string from the start if it starts with it or leaves the string unchanged.
Removes a given string from the end if it ends with it or leaves the string unchanged.
Returns the character code at position at
.
String uri_decode ( ) const
Decodes a string in URL encoded format. This is meant to decode parameters in a URL when receiving an HTTP request.
print("https://example.org/?escaped=" + "Godot%20Engine%3A%27docs%27".uri_decode())
GD.Print("https://example.org/?escaped=" + "Godot%20Engine%3a%27Docs%27".URIDecode());
String uri_encode ( ) const
Encodes a string to URL friendly format. This is meant to encode parameters in a URL when sending an HTTP request.
print("https://example.org/?escaped=" + "Godot Engine:'docs'".uri_encode())
GD.Print("https://example.org/?escaped=" + "Godot Engine:'docs'".URIEncode());
String validate_node_name ( ) const
Removes any characters from the string that are prohibited in Node names (.
:
@
/
"
).
Returns a copy of the string with special characters escaped using the XML standard. If escape_quotes
is true
, the single quote ('
) and double quote ("
) characters are also escaped.
String xml_unescape ( ) const
Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.
Operator DescriptionsΒΆ
bool operator != ( )
bool operator != ( StringName right )
bool operator == ( )
bool operator == ( StringName right )