目前Lua有以下转义序列:
\a
:响铃\b
:退格符\f
:换页符\n
:换行符\r
:回车符\t
:制表符\v
:垂直制表符\\
:反斜杠\"
:双引号\'
:单引号\nnn
:八进制值(nnn是三个八进制数字)\xNN
:十六进制值(Lua 5.2/LuaJIT,NN为两个十六进制数字)
如果我想使用字符串"\a\f\\\""
而忽略所有这些转义序列,按照字面意思解释它,该怎么办?
目前Lua有以下转义序列:
\a
:响铃\b
:退格符\f
:换页符\n
:换行符\r
:回车符\t
:制表符\v
:垂直制表符\\
:反斜杠\"
:双引号\'
:单引号\nnn
:八进制值(nnn是三个八进制数字)\xNN
:十六进制值(Lua 5.2/LuaJIT,NN为两个十六进制数字)如果我想使用字符串"\a\f\\\""
而忽略所有这些转义序列,按照字面意思解释它,该怎么办?
[[\a\f\\]]
请参阅转义序列下面的内容:
http://lua-users.org/wiki/StringsTutorial
你还可以使用string.format
和%q
来进行一些操作,但我不记得这将如何产生结果。我认为它以适合成为有效Lua的格式呈现字符串。\nnn
在Lua中不存在,并且很容易与Lua的\ddd
转义序列混淆,它期望十进制数字。基本上,您已经自己回答了这个问题。
您可以使用\\
转义反斜杠。
要转义双引号,您可以使用单引号作为分隔符。
'\\a\\f\\\\\\"'
[[...]]
的字符串不会解释任何转义序列。 - Etan Reisnerfunction 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
- Bernardo Meurerwordlist
中。所以你可以在wordlist
中避免它们,但是当你的函数获取它们时,instr
已经对它们进行了解释。你到底想在这里做什么?忽略转义字节以检查已知/不良单词(以避免尝试“欺骗”您的检查)? - Etan Reisner