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

Java命令行应用:如何修改字符串中特定单词的颜色而非整串?

如何在命令行中给字符串里的特定单词单独上色

当然可以实现!在命令行环境下要给特定单词单独设置颜色,核心是用ANSI转义序列——这是绝大多数主流终端(比如Linux/macOS终端、Windows PowerShell/新版终端)都支持的文本控制代码,能帮你精准控制部分文本的样式,而不是整个字符串。

为什么setFontColor不行?

setFontColor(Color.red)这类方法通常是给整个输出流设置全局颜色,一旦调用,后续所有输出的文本都会变成红色,没法做到局部单词的颜色区分。而ANSI转义序列可以临时切换颜色,用完后再重置回默认样式,完美解决这个问题。

具体实现步骤

ANSI转义序列的核心格式:

  • 开启指定颜色:\033[颜色码m(比如红色对应的代码是31m)
  • 重置回默认样式:\033[0m

针对你的示例字符串,我们只需要把目标单词games替换成\033[31mgames\033[0m,然后输出拼接后的字符串即可。

代码示例(以Java为例)

public class ColoredCommandLineText {
    public static void main(String[] args) {
        String originalStr = "Jim likes games and cars";
        
        // 定义ANSI颜色控制常量
        final String RED = "\033[31m";
        final String RESET = "\033[0m";
        
        // 替换目标单词,插入颜色控制码
        String coloredStr = originalStr.replace("games", RED + "games" + RESET);
        
        // 输出到命令行
        System.out.println(coloredStr);
    }
}

额外注意事项

  • 如果使用Windows旧版CMD,默认可能不支持ANSI转义序列,你可以通过以下命令开启支持:
    reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
    
    或者直接使用PowerShell(默认支持ANSI转义序列)。
  • 其他颜色的代码可以按需替换:比如绿色是32m,黄色是33m,蓝色是34m,你可以根据需求调整。
  • 其他编程语言的实现逻辑完全一致:找到目标单词,前后插入颜色转义码和重置码,再输出即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:13:16