You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用System.Console.ANSI为字符串添加转义序列实现终端着色?

使用System.Console.ANSI实现带颜色的文本输出

核心实现步骤

  • 先确保已安装ansi-terminal包,代码中引入模块:
    import System.Console.ANSI
    
  • 你提到的"strawberry"风格函数(如red、green、blue等)直接返回对应颜色的ANSI转义字符串,搭配reset函数(重置终端格式),就能在纯代码里为字符串包裹颜色转义序列:
    -- 纯函数:给文本添加红色转义序列
    redText :: String -> String
    redText txt = red ++ txt ++ reset
    
    -- 其他颜色的实现逻辑一致
    greenText :: String -> String
    greenText txt = green ++ txt ++ reset
    
  • 将处理后的字符串传入IO monad的打印函数,就能在终端显示带颜色的文本:
    main :: IO ()
    main = do
        putStrLn $ redText "这是红色的文本"
        putStrLn $ greenText "这是绿色的文本"
        putStrLn "这是恢复默认格式的文本"
    

关键注意点

  • 必须添加reset转义序列,否则后续所有终端输出都会保持当前设置的颜色或格式。
  • 部分老旧终端可能不支持ANSI转义序列,此时会直接显示转义码而非彩色文本。

关于Example.hs链接404的问题

该示例文件已从原位置移除,可前往ansi-terminal的官方仓库的examples目录查找相关示例代码。

内容的提问来源于stack exchange,提问作者Enlico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:16:04