Lua 中涉及包含双引号和/或单引号的字符串问题 - string.format("%q") 在字符串末尾添加 \13 后缀
2021-4-16 9:6:31
收藏:0
阅读:1021
评论:2
在 Lua 中, 我正在读取一个文本文件,其中的每行可能包含单引号或双引号,比如: "L'habitude commence comme un fil de soie et devient vite un câble d'acier" - 西班牙谚语
这些行被用作如下方式:
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. - 西班牙谚语\13"
而 zenity 窗口会显示这个 \13 字符。
该如何解决呢?
谢谢
相关链接: 如何向字符串中添加双引号字符?
点赞
用户2858170
你的引用包含一个回车符。回车符不是可打印字符。Lua 应该如何引用非可打印字符?
格式化符号 q 的作用是对布尔值、nil、数字和字符串进行格式化,使得结果是 Lua 源代码中的一个有效常量。布尔值和 nil 很容易被写入(true、false、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"', quote) 或 string.format("\"%s\"", quote)。在字符串中编写双引号的方法甚至更多。
2021-04-16 09:52:39
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

你的原始文本以
\13结尾,表示回车符。使用以下方法移除它:quote = quote:sub(quote,1,-2)如果字符串可能没有以回车符结尾,则使用以下方法移除它(如果存在):
quote = quote:gsub("\13$","")