【问题标题】:replace \n string with real \n in lua在lua中用真正的\n替换\n字符串
【发布时间】:2019-07-19 17:53:03
【问题描述】:

当一个包含 \n 或 \t 的字符串给出时,lua 中是否有一种方法,我们能够将 \n(real new line) 或 \t(tab) 的真正含义传递给一个可以通过的字符串上。这必须在打印之前完成,因为它可以解决问题!但我不想打印更新的字符串!

我使用了 gsub,但不知道如何表示实际的新行。 (一个制表符可以用一些空格来表示)

【问题讨论】:

  • 我不确定您尝试了什么,但s:gsub("\n","NEWLINE") 将所有换行符替换为字符串 NEWLINE。
  • 我不知道你的意思;能举个例子吗?
  • 这听起来像是您在询问是否可以在字符串文字中包含 new line,您可以使用多行字符串构造函数 [[ some string text ]] 来做到这一点,制表符可以在字符串文字中。跨度>
  • print((your_string:gsub("\\([nt])", {n="\n", t="\t"})))
  • 您的意思是要将两个字符序列\ 后跟n 替换为单个换行符\n?或者你的意思是你想用“换行符”替换\n,就像用空格替换制表符一样?如果您的意思是后者,我认为您不太了解换行符 \n 存在的原因。

标签: lua


【解决方案1】:

参考Lua 5.3 Lua Reference Manual 6.4 String Manipulation string.gsub:

string.gsub (s, pattern, repl [, n])

返回s 的副本,其中所有(或第一个n,如果给定) 出现的模式(参见 §6.4.1)已被替换为 repl指定的替换字符串,可以是字符串、表格、 或一个函数。 gsub 还返回作为其第二个值的总数 发生的匹配数。名称gsub来自全球 替换。

如果repl 是一个表,那么每次匹配都会查询该表,使用 第一次捕获作为键。

local myString = "hello\\n\\tworld"
print(myString)

hello\n\tworld

print((myString:gsub("\\([nt])", {n="\n", t="\t"})))
hello
  world!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多