当前位置: 首页 > 面试题库 >

从字符串中删除所有ANSI颜色/样式

景令秋
2023-03-14
问题内容

我使用一个向字符串添加ANSI颜色/样式的库。例如:

> "Hello World".rgb(255, 255, 255)
'\u001b[38;5;231mHello World\u001b[0m'
> "Hello World".rgb(255, 255, 255).bold()
'\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m'

当我做:

console.log('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m')

一个"Hello World"白色和大胆消息将被输出。

像这样'\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m'如何删除这些元素的字符串?

foo('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m') //=> "Hello World"

也许是一个很好的正则表达式?还是有任何内置功能?

我当时想的工作是创建子进程:

require("child_process")
 .exec("node -pe \"console.error('\u001b[1m\u001b[38;5;231mHello World\u001b[0m\u001b[22m')\""
 , function (err, stderr, stdout) { console.log(stdout);
 });

但是输出是一样的…


问题答案:

应该 使用的正则表达式是

/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g

这不仅匹配颜色,还匹配大多数ANSI转义代码,包括扩展的VT100代码,古旧/专有打印机代码等。

请注意,\u001b上述html" target="_blank">正则表达式中的不适用于您的特定库(即使应该);如果不是,对可接受转义字符的类似问题的回答。

如果您不喜欢正则表达式,则可以随时使用该strip-ansi软件包。

例如,jumpUpAndRed下面的字符串包含ANSI代码,用于跳转到上一行,写一些红色文本,然后返回到下一行的开头-其中要求后缀不是m

var jumpUpAndRed = "\x1b[F\x1b[31;1mHello, there!\x1b[m\x1b[E";

var justText = jumpUpAndRed.replace(

    /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '');

console.log(justText);


 类似资料:
  • 问题内容: 我面临网址问题,我希望能够转换标题,该标题可以包含任何内容,并去除所有特殊字符,因此它们仅包含字母和数字,当然我想用连字符替换空格。 怎么做?我听说过很多关于正则表达式(regex)的使用… 问题答案: 这应该可以满足您的需求: 用法: 将输出: 编辑: 嘿,只是一个简单的问题,如何防止多个连字符彼此相邻?并将它们替换为1?

  • 问题内容: 我正在使用自动化,并使用Jsch连接到远程设备并自动执行一些任务。 我在解析命令结果时遇到问题,因为有时它们带有ANSI Control chars 。 目前,我正在尝试此操作,但我不确定它是否足够完整。 如何从Java字符串中删除ANSI控制字符(VT100)? 问题答案: 大多数ANSI VT100序列的格式为 (可选)后跟一个数字或由分隔的两个数字,后接一些不是数字或。的字符。所

  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议

  • 问题内容: 我正在尝试使用JSON从服务器获取对象数组。 服务器向我发送以下字符串。 现在,如果您仔细查看字符串,您会发现它包含一个 而不是every 。该字符串目前无法格式化为JSONArray。所以,我需要更换的每个实例 有 ,这将有一个非常简单的任务,也 没有一个 转义序列 。 我尝试使用以下代码。 但这给了我以下例外。 我的整个代码,以防万一: 问题答案: 试试这个: 因为反斜杠是正则表达

  • 如何从R中的字符串中删除所有特殊字符并用空格替换它们? 要删除的一些特殊字符是:

  • 问题内容: 我在textarea中有一个文本,我使用.value属性将其读出。 现在,我想使用正则表达式.replace从我的文本中删除所有换行符(按时产生的字符),但是如何在正则表达式中指示换行符? 如果那不可能,还有另一种方法吗? 问题答案: 这可能是一个常见问题解答。无论如何,换行符(更好的是:换行符)可以是回车符(在较旧的Mac上为CR,),换行符(在Unices 包括Linux上为LF,