Lua对包含双引号和/或单引号的字符串发出问题-string.format(";%q";)后缀带有\13

Lua对包含双引号和/或单引号的字符串发出问题-string.format(";%q";)后缀带有\13,lua,double-quotes,string.format,single-quotes,Lua,Double Quotes,String.format,Single Quotes,在卢阿, 我正在阅读一个文本文件,其中的行可能包含单引号或双引号,例如: “习惯于从生活中开始,不受约束地生活”-西班牙谚语 这些线的用途如下: local cmd = 'zenity --question --no-wrap --title "pause" --text ' .. string.format("%q", quote) print (cmd) local retVal = os.execute(cmd) 一切正常,但在字符串的最后,字符

在卢阿, 我正在阅读一个文本文件,其中的行可能包含单引号或双引号,例如: “习惯于从生活中开始,不受约束地生活”-西班牙谚语

这些线的用途如下:

local cmd = 'zenity --question --no-wrap  --title "pause" --text ' .. string.format("%q", quote)
print (cmd)
local retVal = os.execute(cmd)
一切正常,但在字符串的最后,字符\13作为字符串的后缀,我不希望这样

zenity --question --no-wrap --title "pause" --text "L'habitude commence comme un fil de soie et devient vite un câble d'acier. - Proverbe espagnol\13"
zenity windows将显示此\13字符

如何解决这个问题

谢谢

相关的:

您的原始文本以
\13
结尾,一个CR。请使用删除它

quote = quote:sub(quote,1,-2)
如果字符串可能不以CR结尾,则将其删除(如果有)

quote = quote:gsub("\13$","")

您的报价中包含运费申报单。回车不是可打印字符。Lua应该如何引用不可打印的字符

说明符q以某种方式格式化布尔、nil、数字和字符串 结果是Lua源代码中的有效常量。布尔人和 nil是用明显的方式写的(真、假、nil)。花车是 用十六进制写的,以保持全部精度。一串是 在双引号之间写入,必要时使用转义序列 确保Lua解释器可以安全地读回它。对于 例如,电话

 string.format('%q', 'a string with "quotes" and \n new line')
可以生成字符串:

 "a string with \"quotes\" and \
  new line"
如果不希望它以
\13
的形式出现在字符串中,请将其删除

您可以使用
string.sub
将其删除。最好使用
string.gsub
删除多个回车符


或者使用
string.format(''%s',引号)
string.format(\'%s',引号)
。在字符串中写入双引号的方法甚至更多。

哼哼,那么我应该测试string.string.format(''%s',quote)中是否确实有CR。它可以工作>在字符串中写入双引号的方法甚至更多。要了解更多信息,请使用串联运算符代替string.format<代码>打印(“\”…quote..“\”)或
打印(““…quote..”)
打印([[“]]..quote..[“]])
…是的,但这些都不起作用,因为有些句子已经包含单引号和双引号