在LUA中将字符串转换为多行/原始字符串

时间:2017-06-08 12:32:16

标签: lua

有没有办法将带引号的字符串转换为多行字符串?

类似于"这个字符串\ 66 here"到[[此字符串\ 66 here]]因为我想忽略转义字符的解释。

2 个答案:

答案 0 :(得分:3)

Lua 5.3 Reference Manual 3.1: Lexical Conventions

  

也可以使用包含的长格式定义文字字符串   长括号。我们将n级的开头长括号定义为   打开方括号后跟n个等号,然后是另一个   打开方括号。所以,0级的开头长支架是   写为[[,1级开头长括号写成[= [,   等等。结束长括号的定义相似;例如,   等级4的结束长括号写为] ====]。长文字   从任何级别的开始长括号开始,到第一个结束   关闭同级别的长支架。它可以包含除以外的任何文本   一个相同级别的结束括号。这种括号内的文字   可以运行几行,不解释任何转义序列,和   忽略任何其他级别的长括号。任何类型的行尾   序列(回车,换行,回车后跟   换行符或换行后的换行符转换为a   简单换行。

     

为方便起见,紧接着开口长支架   通过换行符,换行符不包含在字符串中。

这就是你需要了解的长琴弦。

将使用引号“some string”定义的字符串转换为类似[[some string]]的字符串没有多大意义,因为引号和方括号实际上不是该字符串的一部分而字符串本身是一样的。 唯一的区别是前导换行符在方括号或转义序列中被忽略,而这些换行符未被解释。

如果您有嵌套字符串,则引号和方括号只是字符串的一部分。在这种情况下,转换也没有多大意义,因为您不能使用带括号的字符串等引号来嵌套字符串。

也许你的整个方法有点过了?

答案 1 :(得分:-1)

你找这样的东西吗?

local db = "google"
local tbl = "accounts"
local where = "field = 'VALUE' AND TRUE"
local order = "id DESC"

local query = string.format([[
    SELECT *
    FROM `%s`.`%s`
    WHERE %s
    ORDER BY %s
]], db, tbl, where, order)