5. Standard libraries

Start from the beginning
                                        

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, which can be a string, a table, or a function. gsub also returns, as its second value, the total number of matches that occurred.

If repl is a string, then its value is used for replacement. The character % works as an escape character: any sequence in repl of the form %n, with n between 1 and 9, stands for the value of the n-th captured substring (see below). The sequence %0 stands for the whole match. The sequence %% stands for a single %.

If repl is a table, then the table is queried for every match, using the first capture as the key; if the pattern specifies no captures, then the whole match is used as the key.

If repl is a function, then this function is called every time a match occurs, with all captured substrings passed as arguments, in order; if the pattern specifies no captures, then the whole match is passed as a sole argument.

If the value returned by the table query or by the function call is a string or a number, then it is used as the replacement string; otherwise, if it is false or nil, then there is no replacement (that is, the original match is kept in the string).

Here are some examples:

x = string.gsub("hello world", "(%w+)", "%1 %1")

-->

x = string.gsub("hello world", "%w+", "%0 %0", 1)

-->

x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")

-->

x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)

-->

x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)

return loadstring(s)()

end)

-->

local t = {name="lua",}

x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)

-->

--------------------------------------------------------------------------------

string.len (s)

Receives a string and returns its length. The empty string "" has length 0. Embedded zeros are counted, so "a\000bc\000" has length 5.

--------------------------------------------------------------------------------

string.lower (s)

Receives a string and returns a copy of this string with all uppercase letters changed to lowercase. All other characters are left unchanged. The definition of what an uppercase letter is depends on the current locale.

--------------------------------------------------------------------------------

string.match (s, pattern [, init])

Looks for the first match of pattern in the string s. If it finds one, then match returns the captures from the pattern; otherwise it returns nil. If pattern specifies no captures, then the whole match is returned. A third, optional numerical argument init specifies where to start the search; its default value is 1 and can be negative.

--------------------------------------------------------------------------------

string.rep (s, n)

Lua coding guideWhere stories live. Discover now