Java中如何让控制台原样输出换行符" "?

如何在Java中直接在控制台输出换行符“\r\n”,而不被解释为换行?本文提供解决方案,帮助您在Java控制台程序中,原样打印包含转义字符(如换行符)的字符串。

许多程序需要在控制台中显示字符串的原始格式,包括其中的转义字符。 然而,直接打印包含"\r\n"的字符串会导致换行。

以下代码示例演示了问题:

public static void main(String[] args) {
    String b = String.format("The data download task succeed. %nName:%s ", "1");
    System.out.println(b); // \n被解释为换行

    String a = "The data download task succeed. \r\n" +
            "Name:1 ";
    S

ystem.out.println(a); // \r\n被解释为换行 System.out.println(a.equals(b)); //true, 内容相同 }

为了解决这个问题,我们创建了一个辅助函数printWithEscapeSequences

public static void printWithEscapeSequences(String str) {
    String replaced = str.replace("\r", "\\r").replace("\n", "\\n");
    System.out.println(replaced);
}

该函数使用replace()方法将字符串中的"\r"替换为"\r","\n"替换为"\n",从而将换行符转义为字符串字面量。 改进后的完整代码如下:

public static void main(String[] args) {
    String b = String.format("The data download task succeed. %nName:%s ", "1");
    printWithEscapeSequences(b);

    String a = "The data download task succeed. \r\n" +
            "Name:1 ";
    printWithEscapeSequences(a);

    System.out.println(a.equals(b));
}

public static void printWithEscapeSequences(String str) {
    String replaced = str.replace("\r", "\\r").replace("\n", "\\n");
    System.out.println(replaced);
}

现在,运行此代码,您将看到控制台输出包含"\r"和"\n"的字符串,而不是实际的换行。 这实现了原样输出换行符的需求。