#lua #gsub
#lua #gsub
Вопрос:
Я хочу заменить знаки% на $. Я попытался выполнить escape-символ (), но это не сработало. Я использую lua 5.1 и получаю ошибку искаженного шаблона. (заканчивается на ‘%’) Это беспокоит меня, потому что я не знаю, как это исправить.
io.write("Search: ") search = io.read()
local query = search:gsub("%", "%") -- Where I put the % sign.
query = query:gsub(" ", "+")
query = query:gsub(" "," ")
query = query:gsub("/", "/")
query = query:gsub("#", "#")
query = query:gsub("$", "$")
query = query:gsub("@", "@")
query = query:gsub("?", "?")
query = query:gsub("{", "{")
query = query:gsub("}","}")
query = query:gsub("[","[")
query = query:gsub("]","]")
query = query:gsub(">", ">")
query = query:gsub("<", "<")
local url = "https://www.google.com/#q=" .. query
print(url)
Вывод считывает:
malformed pattern (ends with '%')
Ответ №1:
Вам нужно выполнить экранирование %
и записать %%
.
Идиоматический способ сделать это в Lua — предоставить таблицу gsub
:
local reserved="% /#$@?{}[]><"
local escape={}
for c in reserved:gmatch(".") do
escape[c]=string.format("%%X",c:byte())
end
escape[" "]=" "
query = search:gsub(".", escape)
Комментарии:
1. Спасибо, что помогли мне! 🙂