如何在Lua中转义多行字符串中的方括号

如何在Lua中转义多行字符串中的方括号,lua,Lua,这是lua编程语言第三版中的一个练习题 练习2.4:如何将以下XML片段作为字符串嵌入Lua中 至少展示两种不同的方式 以下是我的答案: s = "<![CDATA\n Hello world\n]]>" print(s) s2 = [[ <![CDATA Hello world \]\]> ]] print(s2) 所以我有一个问题,如何在Lua中转义多行字符串中的括号 我的lua解释器版本是5.4.2。实际上,本练习的

这是lua编程语言第三版中的一个练习题

练习2.4:如何将以下XML片段作为字符串嵌入Lua中

至少展示两种不同的方式

以下是我的答案:

 s = "<![CDATA\n  Hello world\n]]>"
 print(s)

 s2 = [[
 <![CDATA
    Hello world
  \]\]>
 ]]
 print(s2)
所以我有一个问题,如何在Lua中转义多行字符串中的括号


我的lua解释器版本是5.4.2。

实际上,本练习的全部目的是了解如何解决此问题

理想情况下,通过阅读

在这里,您将了解到长字符串的开始括号和结束括号具有级别

文字字符串也可以使用由 长括号。我们将n级的开口长括号定义为 开口方括号后接n个等号,再接另一个等号 开口方括号。因此,0级的开口长括号是 写入为[],级别1的开口长括号写入为[=[,, 等等。结束长括号的定义类似;例如, 第4级的结束长括号写为]=]。一个长文字 从任何级别的开口长支架开始,在第一个位置结束 关闭同一级别的长括号。它可以包含除 同一级别的结束括号。

顺便说一句,在Lua字符串中不能用反斜杠转义方括号。
无效转义序列未出现错误的唯一原因是长字符串忽略了转义序列。

这解决了我的问题,谢谢。我阅读了手册,意识到开头括号“[[”后面的文本不能包含结尾括号“]”。这就是为什么我们需要等号来提高级别。
<![CDATA
 Hello world
]]>
<![CDATA
 Hello world
\]\]>
 lua: execrcise-4.1.lua:7: unexpected symbol near ']'
s2 = [[
 <![CDATA
    Hello world
  ]]>
 ]]
s2 = [=[
 <![CDATA
    Hello world
  ]]>
 ]=]