【问题标题】:Highlighting text in commandline java [closed]在命令行java中突出显示文本[关闭]
【发布时间】:2015-03-09 02:49:10
【问题描述】:

我有一个任务是重新创建 unix cal 程序,除了一个部分之外,它相当简单。在当天,它会突出显示该数字。我不知道该怎么做。关于如何在 Java 中做到这一点的任何想法?

图片:

【问题讨论】:

标签: java unix command-line calendar highlight


【解决方案1】:

ANSI 颜色代码

通过展开转义序列设置提示的颜色 “\e[sm”,其中 s 是以分号分隔的 ANSI 颜色代码列表: “\e[31;44;1m” 将前景色设置为红色,背景设置为 蓝色,粗体字体; (“\e”是 ASCII 转义 特点。不要忘记用“m”终止序列 字符。)

环境变量中的二进制序列需要通过 指示它们的宽度为零,否则外壳不会 正确计算提示的宽度。 Bash 包含这样的东西 带有斜线括号“[ .. ]”,而 Tcsh 使用百分号大括号“%{ .. %}”。

The codes:
0   restore default color
1   brighter
2   dimmer
4   underlined text
5   flashing text
7   reverse video

            black   red     green   yellow  blue    purple  cyan    white
foreground  30      31      32      33      34      35      36      37
background  40      41      42      43      44      45      46      47 

来自http://zipcon.net/~swhite/docs/computers/linux/shell_prompts.html

所以为了通过Java做到这一点,你需要设置

System.out.println(characterCode + character);

String characterCode = "\033[31;44;1m";char character = 'A'; 的位置

你会得到一个A,前景色设置为红色,背景设置为蓝色,字体为粗体...


编辑:Xubuntu 中的测试结果

public static void main(String[] args) {
    char character = 'A';
    String characterCode;
    for (int foreground = 30; foreground < 38; foreground++) {
        for (int background = 40; background < 48; background++) {
            characterCode = "\033[" + foreground + ";" + background + ";1m";
            System.out.print(characterCode + character);
        }
        System.out.println();
    }

}

【讨论】:

  • 是的,我无法让它工作。不过很好的来源。我的编译器告诉我它无法逃脱 \e.
  • 我并没有真正测试它,所以我确定它需要一些修修补补......我真的很好奇 :) 我将切换到 linux 并检查它是如何工作的...
  • 好的,所以我试了一下,它与String characterCode = "\033[31;44;1m"; 一起工作。我在 Ubuntu 终端上试过了 :)
  • 这适用于我的 Mac 终端 (zsh)。很好的答案
  • 对我来说效果很好。非常感谢!
猜你喜欢
  • 2012-09-30
  • 2015-01-08
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2018-05-20
  • 2016-01-17
  • 2012-08-01
相关资源
最近更新 更多