我需要修复格式错误的模式

我想用 $ 来替换 % 符号。我尝试过使用转义字符 (),但没有起作用。我正在使用 lua 5.1,并且我一直在收到格式错误的模式(以 '%' 结尾)的错误信息,这让我很烦恼,因为我不知道该如何解决它。

io.write("搜索:") search = io.read()
local query = search:gsub("%", "%25") -- 在这里放置 % 符号。
query = query:gsub("+", "%2B")
query = query:gsub(" ","+")
query = query:gsub("/", "%2F")
query = query:gsub("#", "%23")
query = query:gsub("$", "%24")
query = query:gsub("@", "%40")
query = query:gsub("?", "%3F")
query = query:gsub("{", "%7B")
query = query:gsub("}","%7D")
query = query:gsub("[","%5B")
query = query:gsub("]","%5D")
query = query:gsub(">", "%3E")
query = query:gsub("<", "%3C")
local url = "https://www.google.com/#q=" .. query
print(url)

输出结果为:

格式错误的模式(以 '%' 结尾)
点赞
用户107090
用户107090

你需要转义 % 并写成 %%

在 Lua 中的惯用方式是向 gsub 函数传递一个表:

local reserved="%+/#$@?{}[]><"
local escape={}
for c in reserved:gmatch(".") do
    escape[c]=string.format("%%%02X",c:byte())
end
escape[" "]="+"

query = search:gsub(".", escape)
2016-10-12 17:46:28