类型 函数 库 string.* 返回值 字符串 和 数字 修订 版本 2024.3703 关键词 string,gsub,sub,search 另请参阅 string.find() string.gmatch() string.match()
替换字符串中模式的所有出现。返回执行替换操作后的字符串以及替换次数0
)
string.gsub( s, pattern, repl [, n] ) s:gsub( pattern, repl [,n] )
字符串. 待搜索的字符串。
字符串、表 或 函数. 根据类型,string.gsub()
的工作方式如下
如果 repl
是字符串,则使用其值进行替换。字符 %
充当转义字符:repl
中的任何序列 %n
,其中 n
在 1
到 9
之间,都代表n
th%0
代表整个匹配项,序列 %%
代表单个 %
。
如果 repl
是表,则使用第一个捕获作为键对每个匹配项查询表;如果模式没有指定捕获,则使用整个匹配项作为键。
如果 repl
是函数,则在每次匹配项出现时都会调用该函数,并按顺序将所有捕获的子字符串作为参数传递;如果模式没有指定捕获,则整个匹配项作为唯一参数传递。
如果表查询或函数调用返回的值是字符串或数字,则将其用作替换字符串;否则,如果它为 false
或 nil
,则不进行替换( 字符串中保留原始匹配项)。
数字. 要替换的模式的出现次数。
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 ) )