Home Explore Blog CI



neovim

62th chunk of `runtime/doc/luaref.txt`
5f3c00328a90699efd3b9baec45255408e0a32910145ca410000000100000fa7
 whereas `q` and `s` expect a
        string.

        This function does not accept string values containing embedded zeros.

string.gmatch({s}, {pattern})                                  *string.gmatch()*
        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
>lua
               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:
>lua
               t = {}
               s = "from=world, to=Lua"
               for k, v in string.gmatch(s, "(%w+)=(%w+)") do
                 t[k] = v
               end
<

string.gsub({s}, {pattern}, {repl} [, {n}])                      *string.gsub()*
        Returns a copy of {s} in which all occurrences of the {pattern} have
        been replaced by a replacement string specified by {repl}, which may
        be a string, a table, or a function. `gsub` also returns, as its
        second value, the total number of substitutions made.

        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).

        The optional last parameter {n} limits the maximum number of
        substitutions to occur. For instance, when {n} is 1 only the first
        occurrence of `pattern` is replaced.

        Here are some examples:
>lua
           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"
<

string.len({s})                                                   *string.len()*
        Receives a string and returns its length. The empty string `""` has
        length 0. Embedded zeros are counted, so `"a\000b\000c"` has length 5.

string.lower({s})                                               *string.lower()*
        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

Title: Lua String Library: gsub and len
Summary
This section of the Lua string library documentation details the `string.gsub` and `string.len` functions. `string.gsub` replaces occurrences of a pattern in a string with a replacement string, table lookup, or function call, and returns the modified string along with the number of substitutions made. The replacement can use captured substrings. An optional limit can be set on the number of substitutions. `string.len` returns the length of a string, including embedded zeros.