192 lines
8.3 KiB
Lua
192 lines
8.3 KiB
Lua
--- string operations like searching and matching.
|
|
-- @module string
|
|
|
|
local string = {}
|
|
|
|
---
|
|
-- Returns the internal numerical codes of the characters `s[i]`, `s[i+1]`,
|
|
-- ..., `s[j]`. The default value for `i` is 1; the default value for `j`
|
|
-- is `i`.
|
|
-- Note that numerical codes are not necessarily portable across platforms.
|
|
function string.byte(s , i , j) end
|
|
|
|
---
|
|
-- Receives zero or more integers. Returns a string with length equal to
|
|
-- the number of arguments, in which each character has the internal numerical
|
|
-- code equal to its corresponding argument.
|
|
-- Note that numerical codes are not necessarily portable across platforms.
|
|
function string.char(...) end
|
|
|
|
---
|
|
-- Returns a string containing a binary representation of the given
|
|
-- function, so that a later `loadstring` on this string returns a copy of
|
|
-- the function. `function` must be a Lua function without upvalues.
|
|
function string.dump(function) end
|
|
|
|
---
|
|
-- Looks for the first match of `pattern` in the string `s`. If it finds a
|
|
-- match, then `find` returns the indices of `s` where this occurrence starts
|
|
-- and ends; otherwise, it returns nil. A third, optional numerical argument
|
|
-- `init` specifies where to start the search; its default value is 1 and
|
|
-- can be negative. A value of true as a fourth, optional argument `plain`
|
|
-- turns off the pattern matching facilities, so the function does a plain
|
|
-- "find substring" operation, with no characters in `pattern` being considered
|
|
-- "magic". Note that if `plain` is given, then `init` must be given as well.
|
|
-- If the pattern has captures, then in a successful match the captured values
|
|
-- are also returned, after the two indices.
|
|
function string.find(s, pattern , init , plain) end
|
|
|
|
---
|
|
-- Returns a formatted version of its variable number of arguments following
|
|
-- the description given in its first argument (which must be a string). The
|
|
-- format string follows the same rules as the `printf` family of standard C
|
|
-- functions. The only differences are that the options/modifiers `*`, `l`,
|
|
-- `L`, `n`, `p`, and `h` are not supported and that there is an extra option,
|
|
-- `q`. The `q` option formats a string in a form suitable to be safely read
|
|
-- back by the Lua interpreter: the string is written between double quotes,
|
|
-- and all double quotes, newlines, embedded zeros, and backslashes in the
|
|
-- string are correctly escaped when written. For instance, the call
|
|
--
|
|
-- string.format('%q', 'a string with "quotes" and \n new line')
|
|
--
|
|
-- will produce the string:
|
|
--
|
|
-- "a string with \"quotes\" and \
|
|
-- new line"
|
|
--
|
|
-- The options `c`, `d`, `E`, `e`, `f`, `g`, `G`, `i`, `o`, `u`, `X`, and
|
|
-- `x` all expect a number as argument, whereas `q` and `s` expect a string.
|
|
-- This function does not accept string values containing embedded zeros,
|
|
-- except as arguments to the `q` option.
|
|
function string.format(formatstring, ...) end
|
|
|
|
---
|
|
-- Returns an iterator function that, each time it is called, returns the
|
|
-- next captures from `pattern` over string `s`. If `pattern` specifies no
|
|
-- captures, then the whole match is produced in each call.
|
|
-- As an example, the following loop
|
|
--
|
|
-- s = "hello world from Lua"
|
|
-- for w in string.gmatch(s, "%a+") do
|
|
-- print(w)
|
|
-- end
|
|
--
|
|
-- will iterate over all the words from string `s`, printing one per line. The
|
|
-- next example collects all pairs `key=value` from the given string into
|
|
-- a table:
|
|
--
|
|
-- t = {}
|
|
-- s = "from=world, to=Lua"
|
|
-- for k, v in string.gmatch(s, "(%w+)=(%w+)") do
|
|
-- t[k] = v
|
|
-- end
|
|
--
|
|
-- For this function, a '`^`' at the start of a pattern does not work as an
|
|
-- anchor, as this would prevent the iteration.
|
|
function string.gmatch(s, pattern) end
|
|
|
|
---
|
|
-- 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="hello hello world world"
|
|
-- x = string.gsub("hello world", "%w+", "%0 %0", 1)
|
|
-- --> x="hello hello world"
|
|
-- x = string.gsub("hello world from Lua", "(%w+)%s*(%w+)", "%2 %1")
|
|
-- --> x="world hello Lua from"
|
|
-- x = string.gsub("home = $HOME, user = $USER", "%$(%w+)", os.getenv)
|
|
-- --> x="home = /home/roberto, user = roberto"
|
|
-- x = string.gsub("4+5 = $return 4+5$", "%$(.-)%$", function (s)
|
|
-- return loadstring(s)()
|
|
-- end)
|
|
-- --> x="4+5 = 9"
|
|
-- local t = {name="lua", version="5.1"}
|
|
-- x = string.gsub("$name-$version.tar.gz", "%$(%w+)", t)
|
|
-- --> x="lua-5.1.tar.gz"
|
|
function string.gsub(s, pattern, repl , n) end
|
|
|
|
---
|
|
-- Receives a string and returns its length. The empty string `""` has
|
|
-- length 0. Embedded zeros are counted, so `"a\000bc\000"` has length 5.
|
|
function string.len(s) end
|
|
|
|
---
|
|
-- 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.
|
|
function string.lower(s) end
|
|
|
|
---
|
|
-- 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.
|
|
function string.match(s, pattern , init) end
|
|
|
|
---
|
|
-- Returns a string that is the concatenation of `n` copies of the string
|
|
-- `s`.
|
|
function string.rep(s, n) end
|
|
|
|
---
|
|
-- Returns a string that is the string `s` reversed.
|
|
function string.reverse(s) end
|
|
|
|
---
|
|
-- Returns the substring of `s` that starts at `i` and continues until
|
|
-- `j`; `i` and `j` can be negative. If `j` is absent, then it is assumed to
|
|
-- be equal to -1 (which is the same as the string length). In particular,
|
|
-- the call `string.sub(s,1,j)` returns a prefix of `s` with length `j`, and
|
|
-- `string.sub(s, -i)` returns a suffix of `s` with length `i`.
|
|
function string.sub(s, i , j) end
|
|
|
|
---
|
|
-- Receives a string and returns a copy of this string with all lowercase
|
|
-- letters changed to uppercase. All other characters are left unchanged. The
|
|
-- definition of what a lowercase letter is depends on the current locale.
|
|
function string.upper(s) end
|
|
|
|
---
|
|
-- (5.3) Returns a binary string containing the values v1, v2, etc. packed (that is, serialized in binary form)
|
|
--- according to the format string fmt (see 6.4.2).
|
|
function string.pack (fmt, v1, v2, ···) end
|
|
|
|
---
|
|
-- (5.3) Returns the size of a string resulting from string.pack with the given format.
|
|
-- The format string cannot have the variable-length options 's' or 'z' (see 6.4.2).
|
|
function string.packsize (fmt) end
|
|
|
|
---
|
|
-- (5.3) Returns the values packed in string s (see string.pack) according to the format string fmt (see 6.4.2).
|
|
-- An optional pos marks where to start reading in s (default is 1)
|
|
-- After the read values, this function also returns the index of the first unread byte in s.
|
|
function string.unpack (fmt, s [, pos]) end
|
|
|
|
return string
|
|
|