1

要从字符串中动态删除一个字符,可以使用该/b字符。

puts "Hello\b World!" #=> Hell World!

\b 基本上和退格键做同样的事情。是否有模拟前向删除的角色?

4

1 回答 1

1

在执行中:

puts "Hello\b World!"

\b不会删除前面的字符。这是一个常见的误解,因为在键盘上使用退格键会删除屏幕上光标之前和键盘输入缓冲区中先前键入的字符。这种行为的发生是因为操作系统的键盘输入软件是如何设计的。

在上述情况下putso仍然存在于字符串中。发生的情况是,当显示时,退格会导致o被后面的空格覆盖。出现这种情况的原因o是先显示,然后是退格(输出光标后退一个字符位置),然后是空格,依次显示。

如果你有这样的情况:

puts "Hello<del> World!"

将显示HelloWorld!,那么这意味着 的值的输出<del>会以某种方式导致以下空格 ( ) 的输出不发生。换句话说,<del>它将具有“无论输出的下一个章程是什么,都跳过它”的功能。我不相信 Windows 或 Linux 输出中存在这样的控制字符,尽管我认为可以编写一个输出驱动程序,该驱动程序对于某些已定义的控制字符具有该行为。

你甚至可以做这样的事情:

"Hello W<left-arrow><left-arrow><del><right-arrow>orld!"

HelloWorld如果您的终端设置为接受向左或向右移动光标的控制字符,则会显示。但这显然与“将来删除”案例的功能不同。

于 2013-10-10T11:31:49.773 回答