【发布时间】:2021-04-06 21:26:02
【问题描述】:
目前 Lua 有以下转义序列:
-
\a:贝尔 -
\b:退格 -
\f:换页 -
\n: 换行 -
\r:回车 -
\t:标签 -
\v:垂直制表符 -
\\: 反斜杠 -
\":双引号 -
\':单引号 -
\nnn:八进制值(nnn 是 3 个八进制数字) -
\xNN:十六进制值(Lua5.2/LuaJIT,NN是两个十六进制数字)
我如何使用诸如"\a\f\\\"" 之类的字符串而忽略所有这些转义序列,按字面意思解释它?
【问题讨论】:
-
“使用字符串”是什么意思?你想做什么?
[[...]]字符串不解释任何转义序列。 -
基本上
function checkword (instr)< wordlist = {"FIN", "FFI", "PHIN", "PHEN", "FIN", "PHIN", "IFFUM", "MUF", "MEUFEEN", "FEN","FEEN"} for i, v in ipairs (wordlist) do if (string.match(processstring(instr), v) ~= nil)then return 1 end end end -
其中哪一部分想要忽略转义序列?唯一没有经过 lua 处理的字符串的部分是
wordlist。因此,您可以在 wordlist 中避免使用它们,但instr已经在您的函数获取它们后对其进行了解释。你到底想在这里做什么?在检查已知/坏词方面忽略转义字节(以避免尝试“欺骗”您的检查)? -
Lua 没有八进制转义序列,\nnn 转义是十进制。
-
Etan,如果我在 wordlist 中有一个像
"/\/\ |_| |= |= | |\|"这样的字符串,它就不起作用;不知道为什么。
标签: lua escaping string-literals