Lua中gsub普通字符串替换时%转义报错问题及实现需求
Lua 字面量字符串替换解决方法
你的问题出在gsub的替换字符串处理逻辑上:当用字符串作为gsub的第二个参数时,%是特殊转义字符,用来引用捕获组。你的path变量经过第一次替换后是hello%20world,在第二次gsub时,%2会被当作要引用第2个捕获组,但模式$path没有捕获组,所以直接报错。
下面给你两种可行的修改方案:
方案一:转义替换字符串中的%
把path里的单个%转义成%%,这样gsub处理时会将其解析为字面量%:
local path = "hello world" path = path:gsub("( )", "%%20") path = path:gsub("%%", "%%%%") -- 将%转义为%% local test = "==$path==" test = test:gsub("$path", path) print(test) -- 输出 ==hello%20world==
方案二:用函数作为替换参数
使用函数返回path作为替换内容,函数返回的字符串不会被gsub解析转义逻辑:
local path = "hello world" path = path:gsub("( )", "%%20") local test = "==$path==" test = test:gsub("$path", function() return path end) -- 直接返回变量值 print(test) -- 输出 ==hello%20world==
内容的提问来源于stack exchange,提问作者Damn Vegetables
相关产品推荐
相关产品推荐

