Skip to main content
Version: latest - a1.156.0 ⚖️

string

This library provides generic functions for string manipulation, such as finding and extracting substrings, and pattern matching. When indexing a string in Lua, the first character is at position 1 (not at 0, as in C). Indices are allowed to be negative and are interpreted as indexing backwards, from the end of the string. Thus, the last character is at position -1, and so on.


tip

You can use this library statically as string.method(my_str, ...) or directly as my_str:method(...)!

🎒 Examples​

(string.StartsWith) Checks if string starts with text
local str = "awesome text!"
local starts = str:StartsWith("awesome")
-- Outputs "true"
(string.EndsWith) Checks if string ends with text
local str = "awesome text!"
local ends = str:EndsWith("text!")
-- Outputs "true"
(string.Trim) Removes extra spaces
local str = " Hello world! "
local new_str = str:Trim()
-- Outputs "Hello world!"
(string.FormatArgs) Replaces {1} and {2} with corresponding texts
local str = "Hello {2} I'm {1}"
local new_str = str:FormatArgs("a noob", "world!")
-- Outputs "Hello world! I'm a noob"
(string.ToTable) Convert string to table of characters
local str = "hello"
local tbl = str:ToTable()
-- Outputs "{'h', 'e', 'l', 'l', 'o'}"

🦠 Functions​

ReturnsNameDescription
booleanStartsWithTest whether this string starts with given string
booleanEndsWithTest whether this string ends with given string
stringTrimReturns a new string with removed whitespace characters from the front and end of this string
stringFormatArgsA better string.Format, replace {num} by the corresponding vararg in a string
varargs of integerbyteReturns the internal numeric codes of the characters s[start_pos], s[start_pos + 1], ..., s[end_pos]
number, number, stringfindLooks for the first match of pattern in the string.
stringrepReturns a string that is the concatenation of n copies of the string s separated by the string sep.
stringlowerReturns a copy of this string with all uppercase letters changed to lowercase.
stringupperReturns a copy of this string with all lowercase letters changed to uppercase.
numbermatchLooks for the first match of pattern in the string.
stringreverseReturns a string that is the string s reversed.
stringsubReturns the substring of the string that starts at i and continues until j.
functiongmatchReturns an iterator function that, each time it is called, returns the next captures from pattern over the string s.
numberlenReturns its length.
string, numbergsubReturns a copy of s in which all (or the first n, if given) occurrences of the pattern have been replaced by a replacement string specified by repl.
stringformatReturns a formatted version of its variable number of arguments following the description given in its first argument.
table of stringToTableSplit string into table of single characters

StartsWith​

Test whether this string starts with given string
local ret = my_string:StartsWith(other_string)

Parameters

TypeParameterDefaultDescription
stringother_string Required parameter The given string

Returns

TypeDescription
booleanWhether this string starts with the given string
string.StartsWith Examples
Checks if string starts with text
local str = "awesome text!"
local starts = str:StartsWith("awesome")
-- Outputs "true"

EndsWith​

Test whether this string ends with given string
local ret = my_string:EndsWith(other_string)

Parameters

TypeParameterDefaultDescription
stringother_string Required parameter The given string

Returns

TypeDescription
booleanWhether this string ends with the given string
string.EndsWith Examples
Checks if string ends with text
local str = "awesome text!"
local ends = str:EndsWith("text!")
-- Outputs "true"

Trim​

Returns a new string with removed whitespace characters from the front and end of this string
local ret = my_string:Trim()

Returns

TypeDescription
stringThe trimmed string
string.Trim Examples
Removes extra spaces
local str = " Hello world! "
local new_str = str:Trim()
-- Outputs "Hello world!"

FormatArgs​

A better string.Format, replace {num} by the corresponding vararg in a string
local ret = my_string:FormatArgs(args...)

Parameters

TypeParameterDefaultDescription
varargs of anyargs... Required parameter The args

Returns

TypeDescription
stringThe formatted string
string.FormatArgs Examples
Replaces {1} and {2} with corresponding texts
local str = "Hello {2} I'm {1}"
local new_str = str:FormatArgs("a noob", "world!")
-- Outputs "Hello world! I'm a noob"

byte​

Returns the internal numeric codes of the characters s[start_pos], s[start_pos + 1], ..., s[end_pos]
local ret_01, ret_02, ... = my_string:byte(start_pos?, end_pos?)

Parameters

TypeParameterDefaultDescription
integerstart_pos?1
The first character of the string to get the byte of
integerend_pos?start_pos
The last character of the string to get the byte of

Returns

TypeDescription
varargs of integerthe internal numeric code

find​

Looks for the first match of pattern in the string.
local ret_1, ret_2, ret_3 = my_string:find(needle, start_position, plain)

Parameters

TypeParameterDefaultDescription
stringneedle Required parameter The string to find, can contain patterns if enabled.
numberstart_position Required parameter The position to start the search from, can be negative start position will be relative to the end position.
booleanplain Required parameter Disable patterns.

Returns

TypeDescription
numberStart index of the match, or nil if not found
numberEnd index of the match
stringCaptured substrings, if the pattern has captures

rep​

Returns a string that is the concatenation of n copies of the string s separated by the string sep.
local ret = my_string:rep(repetitions, separator)

Parameters

TypeParameterDefaultDescription
numberrepetitions Required parameter Times to repeat, this values gets rounded internally.
stringseparator Required parameter String that will separate the repeated piece. Notice that it doesn't add this string to the start or the end of the result, only between the repeated parts.

Returns

TypeDescription
stringThe repeated string

lower​

Returns a copy of this string with all uppercase letters changed to lowercase.
local ret = my_string:lower()

Returns

TypeDescription
stringThe lowercase string

upper​

Returns a copy of this string with all lowercase letters changed to uppercase.
local ret = my_string:upper()

Returns

TypeDescription
stringThe uppercase string

match​

Looks for the first match of pattern in the string.
local ret = my_string:match(pattern, start_position)

Parameters

TypeParameterDefaultDescription
stringpattern Required parameter The pattern that defines what should be matched.
numberstart_position Required parameter The start index to start the matching from, can be negative to start the match from a position relative to the end.

Returns

TypeDescription
numberThe captures of the first match, or the whole match if there are no captures. Nil if not found

reverse​

Returns a string that is the string s reversed.
local ret = my_string:reverse()

Returns

TypeDescription
stringThe reversed string

sub​

Returns the substring of the string that starts at i and continues until j.
local ret = my_string:sub(start_position, end_position)

Parameters

TypeParameterDefaultDescription
numberstart_position Required parameter The position of the first character that will be included in the sub-string.
numberend_position Required parameter The position of the last character to be included in the sub-string. It can be negative to count from the end.

Returns

TypeDescription
stringThe substring

gmatch​

Returns an iterator function that, each time it is called, returns the next captures from pattern over the string s.
local ret = my_string:gmatch(pattern)

Parameters

TypeParameterDefaultDescription
stringpattern Required parameter The pattern to search for

Returns

TypeDescription
functionAn iterator function returning the next match on each call

len​

Returns its length.
local ret = my_string:len()

Returns

TypeDescription
numberThe length of the string, in bytes

gsub​

Returns a copy of s in which all (or the first n, if given) occurrences of the pattern have been replaced by a replacement string specified by repl.
local ret_1, ret_2 = my_string:gsub(pattern, replacement, max_replacements)

Parameters

TypeParameterDefaultDescription
stringpattern Required parameter The pattern that defines what should be matched and eventually be replaced.
stringreplacement Required parameter In case of a string the matched sequence will be replaced with it. In case of a table, the matched sequence will be used as key and the table will be tested for the key, if a value exists it will be used as replacement. In case of a function all matches will be passed as parameters to the function, the return value(s) of the function will then be used as replacement.
numbermax_replacements Required parameter Maximum number of replacements to be made.

Returns

TypeDescription
stringThe resulting string
numberThe number of replacements made

format​

Returns a formatted version of its variable number of arguments following the description given in its first argument.
local ret = my_string:format(format_parameters...)

Parameters

TypeParameterDefaultDescription
varargs of anyformat_parameters... Required parameter Values to be formatted into the string.

Returns

TypeDescription
stringThe formatted string

ToTable​

Converts this string into a table where each element is a single-character substring of the original string.
local ret = my_string:ToTable()

Returns

TypeDescription
table of stringTable of single-character strings
string.ToTable Examples
Convert string to table of characters
local str = "hello"
local tbl = str:ToTable()
-- Outputs "{'h', 'e', 'l', 'l', 'o'}"