Lua ignore Escape Sequence(Lua忽略转义序列)

Lua目前具有以下转义序列:

  • \a:报警
  • \b:退格
  • \f:新页
  • \n:换行
  • \r:回车
  • \t:制表符
  • \v:垂直制表符
  • \\:反斜杠
  • \":双引号
  • \':单引号
  • \nnn:八进制值(nnn为3位八进制数)
  • \xNN:十六进制值(Lua5.2/LuaJIT,NN为两个十六进制数)

我如何使用字符串 "\a\f\\\" 等,忽略所有这些转义序列,换句话说,将其文字意义解释为字面意义?

点赞
用户4913049
用户4913049

你可以使用 Lua 的 _长括号_,也称为 _括号形式_,例如 [[\a\f\\]]

请参见转义序列: http://lua-users.org/wiki/StringsTutorial

您可能还可以使用 string.format%q 进行某些操作,但我不记得这将如何在脑海中呈现字符串。 我认为它以适合成为有效Lua的格式呈现字符串。

另外,请注意,八进制的 C 转义序列 \nnn 不存在 于 Lua 中,很容易与 Lua 的 \ddd 转义序列混淆,后者需要使用 十进制 数字。

以下的参考图片摘自 Lua 5.4 参考手册

Lua 的类似 C 的转义序列子集十进制,而非八进制十六进制长括号形式

2015-05-18 17:36:56
用户15025703
用户15025703

基本上,您已经自己回答了这个问题。 您可以使用 \\ 转义反斜杠。 要转义双引号,您可以使用单引号作为分界符。

'\\a\\f\\\\\\"'
2022-07-21 05:11:42