打印ANSI颜色的消息后设置用户输入文本的颜色?

时间:2016-04-23 22:02:34

标签: java colors user-input ansi-colors

我正在Netbeans中运行一个控制台应用程序,它提示用户输入,验证输入,并在输入验证失败并重新提示时输出错误消息。我设置的错误消息是按this answer的红色文本打印。它完美无缺,除了一个问题。

在程序要求第二个输入后,如果第一个输入无效,则该错误消息后面的用户输入与错误消息的颜色相同。

例如,用户输入了无效输入。他们在错误消息后再次输入输入。它应该以默认文本颜色打印(我的版本为黑色),但它会打印为红色文本。

有没有办法在我的文本中关闭ANSI颜色代码的应用?各种结束标签?

代码:

public static void main(String[] args) 
{

    //Initialize keyboard input
    Scanner keyboard = new Scanner(System.in);

    //Print prompt to screen
    System.out.println("User input prompt goes here: ");

    //Store user input
    String inputGot = keyboard.nextLine();

    //Print a dummy error message
    System.out.println("\u001B[31m" + "This is an error of some sort.  "
            + "Please re-enter input: ");

    //Rerun input prompt (this would be looped in the real program)
    System.out.println("User input prompt goes here: ");

    //Store user input
    inputGot = keyboard.nextLine();
}

1 个答案:

答案 0 :(得分:2)

无论您希望红色文本停止在何处,都需要插入ANSI转义序列以关闭所有ANSI属性:"\u001b[0m"

请参阅此内容,了解您可能需要/需要的其他内容。 https://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes