gpt4 book ai didi

ruby - 用于删除下一个/尾随字符的转义序列?

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:43 29 4
gpt4 key购买 nike

除了使用 \x08 删除前导字符外,是否可以同时删除尾随字符?是否有一个转义序列将删除下一个字符而不是前一个字符?

我看到 delete 显然映射到 ASCII 127,即 Hex 7F,但以下代码:

puts "a\x08b\x7fcd"

产生

b⌂cd

我预计\x7f 会删除它后面的 'c' 字符,但它没有。

最佳答案

您实际上并没有使用 \x08 删除任何内容,您只是用“b”覆盖了“a”。

想象一下您使用电传纸质终端的过去。您实际上会在纸上看到的是打印的“a”,电传打字机会备份一个空格,然后在其上打印“b”。所有非打印的ascii码都是为了控制电传纸终端的移动而发明的。

这正是上面的输出所做的,只是终端屏幕不会保持前一个“a”的像素点亮。

“del”字符对基本终端屏幕没有这种特殊含义。它对于编辑器或 shell 之类的程序可能意味着什么,但对于 STDOUT 它只是另一个要打印的 ascii 字符。

“del”的本义是忽略此字符作为输入,参见:

http://en.wikipedia.org/wiki/Delete_character

据我所知,您可以在 STDOUT 将被视为不打印下一个 CHAR 的信号的字符之前放置任何内容。然而,如果您的输出是一个终端仿真程序,例如 xterm,您可以使用转义码做很多事情来完成您想要的。参见示例:

http://ascii-table.com/ansi-escape-sequences-vt-100.php

用于抽象出所有这些复杂代码的“标准”库是 ncurses,其中有几个 ruby​​ 接口(interface)。看

Best gem for working with ncurses and ruby

关于ruby - 用于删除下一个/尾随字符的转义序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13797253/

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