【问题标题】:How to calculate the length of a xterm control sequence [duplicate]如何计算xterm控制序列的长度[重复]
【发布时间】:2020-01-13 18:02:17
【问题描述】:

我希望在将文本传递给标准输出/控制台之前对其进行格式化。为了正确地做到这一点,我需要知道给定的文本部分在打印到控制台后有多长时间,这需要知道由于它们是转义序列而不会打印多少字符。

在网上我找到了多个documentations for these sequence commands,但似乎没有快速简便的方法可以找出给定转义序列命令的结束位置,除非我要解析它们。在不解析的情况下获取任何转义序列命令的长度是否有技巧/解决方案?

How many characters is this \x1b[38;2;20;60;122m string \x1b[0m in console?

【问题讨论】:

  • 你不需要详细解析它们,只需搜索转义序列的结束字符即可。
  • 你用什么语言做这个? stackoverflow.com/questions/14693701/… 展示了一个 Python 解决方案。
  • 我正在使用 node.js
  • 另一个问题中有正则表达式可以过滤掉转义序列。我认为他们应该在 JS 中工作。

标签: linux console xterm vt100


【解决方案1】:

你可以使用ansifilter:

$ printf '\x1b[38;2;20;60;122mabc\x1b[0m'  | ./ansifilter --no-trailing-nl | wc -c
3

【讨论】:

  • 为了可移植性,我不打算为此使用外部库或可执行文件。
猜你喜欢
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
相关资源
最近更新 更多