【发布时间】:2014-10-04 10:12:39
【问题描述】:
我 use a library 将 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);
});
但是输出是一样的……
【问题讨论】:
-
你应该使用chalk。它会检查是否启用了颜色,并会自动从您的文本中去除 ANSI 代码。
-
@Qix 这不是关于样式,而是关于 unstyling -- 从字符串中删除 ANSI 样式。对于着色,我使用
couleurs,对于取消样式我使用ansi-parser。希望现在更清楚了。 -
I use a library that adds ANSI colors / styles to strings我是说通过使用粉笔,如果您愿意,您可以自动删除这些代码(即您可以设置样式和自动删除)。 -
@Qix 啊,我明白了。我以为
chalk仅用于着色。据我所知,strip-ansi用于此目的,您是贡献者之一。 :-) 不错! -
@Qix 您可以更新您的答案,包括
strip-ansi包。我一直喜欢小巧可爱的 npm 包。 :)
标签: javascript regex node.js ansi-escape