Type Function Library string.* Return value String Revision 2017.3060 Keywords string, gsub, sub, search See also string.find() string.gmatch() string.match()
Replace all occurrences of a pattern in a string.
string.gsub( s, pattern, repl [, n] ) s:gsub( pattern, repl [,n] )
String. The string to be searched.
String. A string specifying the pattern to match. See Lua String Manipulation.
String, Table, or Function. Depending on the type, string.gsub()
works as follows:
If repl
is a string, its value is used for the 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%0
stands for the whole match and the sequence %%
stands for a single %
.
If repl
is a table, the table is queried for every match, using the first capture as the key; if the pattern specifies no captures, the whole match is used as the key.
If repl
is a function, this function is called every time a match occurs, with all captured substrings passed as arguments in order; if the pattern specifies no captures, 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, it is used as the replacement string; otherwise, if it is false
or nil
, then there is no replacement (the original match is kept in the string).
Number. Number of occurrences of pattern to replace.
print( string.gsub( "Hello banana", "banana", "Corona user" ) ) print( string.gsub( "banana", "a", "A", 2 ) ) -- Limit substitutions made to 2 print( string.gsub( "banana", "(an)", "%1-" ) ) -- Capture any occurances of 'an' and replace print( string.gsub( "banana", "a(n)", "a(%1)" ) ) -- Brackets around n's which follow a's print( string.gsub( "banana", "(a)(n)", "%2%1" ) ) -- Reverse any 'an's print( string.gsub( "Hello Lua user", "(%w+)", function(w) return string.len(w) end ) ) -- Replace with lengths print( string.gsub( "banana", "(a)", string.upper ) ) -- Make all 'a's found uppercase print( string.gsub( "banana", "(a)(n)", function(a,b) return b..a end ) ) -- Reverse any "an"s print( string.gsub( "The big {brown} fox jumped {over} the lazy {dog}.", "{(.-)}", function(a) print(a) end ) ) print( string.gsub( "The big {brown} fox jumped {over} the lazy {dog}.", "{(.*)}", function(a) print(a) end ) )