gpt4 book ai didi

unix - 使用 ANSI 框字符在终端中绘制表格

转载 作者:行者123 更新时间:2023-12-04 14:01:35 24 4
gpt4 key购买 nike

我正在尝试打印一个比纯文本表示更令人赏心悦目的表格。基本上我想转换这样的东西:

+-----+--------+
| age | weight |
+-----+--------+
| 10 | 100 |
| 80 | 500 |
+-----+--------+

像这样:
┌─────┬────────┐
| age | weight |
├─────┼────────┤
│ 10 │ 100 │
│ 80 │ 500 │
└─────┴────────┘

这是我在终端中看到的截图:

in terminal looks like this

注意行之间的间隙。我的问题是它们没有正确连接,而其他使用 ANSI 打印的 Unix 工具在终端中看起来很好。例如,树,如果我运行 tree -A在我的终端`我得到这个:

tree in terminal

注意垂直线是如何连接在一起的。这很有趣,因为当我将 tree 的输出复制并粘贴到我的文本编辑器中并运行我的脚本时,我得到如下内容:

tree in my code

显然,我缺少有关在终端中打印 ANSI 字符的信息,并且无法通过谷歌搜索找到任何相关信息。任何人都可以对这个话题有所了解吗?

最佳答案

我想我应该回答我自己的问题。经过一些研究和 friend 和老板Linus的帮助,我发现我需要先强制终端进入图形模式,然后打印特殊字符,然后返回到文本模式。切换到图形模式的 ascii 代码是 14,15 将返回到文本模式。所以这是 ruby​​ 中的代码:

printf("%c\n", 14)
printf("%c ", 0x6A) # ┘
printf("%c ", 0x6B) # ┐
printf("%c ", 0x6C) # ┌
printf("%c ", 0x6D) # └
printf("%c ", 0x6E) # ┼
printf("%c ", 0x71) # ─
printf("%c ", 0x74) # ├
printf("%c ", 0x75) # ┤
printf("%c ", 0x76) # ┴
printf("%c ", 0x77) # ┬
printf("%c\n", 0x78) # │


a = sprintf("%c", 0x6C) + # ┌
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c\n", 0x6B) + # ┐
sprintf("%c", 0x78) + # │
#print(" ")
" " +
sprintf("%c\n", 0x78) + # │
sprintf("%c", 0x6D) + # └
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x6A) # ┘

puts a

printf("%c\n", 15)

关于unix - 使用 ANSI 框字符在终端中绘制表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4494306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com