【问题标题】:How do I print escape characters in Java?如何在 Java 中打印转义字符?
【发布时间】:2011-12-14 20:07:08
【问题描述】:

当我有一个字符串时,例如:

String x = "hello\nworld";

在使用 System.out 时,如何让 Java 打印实际的转义字符(而不是将其解释为转义字符)?

例如调用时

System.out.print(x);

我想看看:

hello\nworld

而不是:

hello
world

出于调试目的,我想查看实际的转义字符。

【问题讨论】:

  • \ 被称为反斜杠。转义字符意味着别的东西
  • @user2587965 — 计算中的escape character 是“对字符序列中的后续字符调用替代解释的字符”。在 Java 字符串中,反斜杠是转义字符。

标签: java


【解决方案1】:

在 Java lib "org.apache.commons.lang" 中使用方法 "StringEscapeUtils.escapeJava"

String x = "hello\nworld";
System.out.print(StringEscapeUtils.escapeJava(x));

【讨论】:

  • StringEscapeUtils.escapeJava in "org.apache.commons.lang" 自 3.6 版起已弃用,请改用 commons-text StringEscapeUtils
【解决方案2】:

一种方法是:

public static String unEscapeString(String s){
    StringBuilder sb = new StringBuilder();
    for (int i=0; i<s.length(); i++)
        switch (s.charAt(i)){
            case '\n': sb.append("\\n"); break;
            case '\t': sb.append("\\t"); break;
            // ... rest of escape characters
            default: sb.append(s.charAt(i));
        }
    return sb.toString();
}

然后你运行System.out.print(unEscapeString(x))

【讨论】:

  • 这是我一直在寻找的,但我不知道我必须编写一个函数来执行此操作。这意味着了解所有可能的转义字符。我想有一个图书馆已经这样做了。
  • 有,我想,但我没用过。此处还有另一个 Stack Overflow question
  • 谢谢,我正在寻找一个类似的问题,但找不到正确的关键字:)
【解决方案3】:

你必须逃避斜线本身:

String x = "hello\\nworld";

【讨论】:

  • 这里的限制是如果另一个用户正在使用该程序但不知道这个提示怎么办?
【解决方案4】:

System.out.println("hello \\nworld");

【讨论】:

    【解决方案5】:

    Java 的转义序列与 C 中的相同。 使用String x = "hello\\nworld";

    【解决方案6】:

    只需转义转义字符。

    String x = "hello\\nworld";
    

    【讨论】:

      【解决方案7】:

      尝试像\\n这样转义反斜杠

      【讨论】:

        【解决方案8】:

        您可能想查看this method。尽管这可能比您预期的要多。或者,对换行符、回车符和制表符使用字符串替换方法。请记住,还有诸如 unicode 和 hex 序列之类的东西。

        【讨论】:

        • 在这种情况下,正则表达式引用不会提供正确的答案。首先,这种方法很可能只是用\Q\E 包装输入。其次,即使它确实对每个字符进行了转义,这些值也根本不匹配。例如,制表符\t 是一个有效的正则表达式字符,不需要转义,而. 需要转义。
        猜你喜欢
        • 2016-07-20
        • 2011-10-04
        • 1970-01-01
        • 2015-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多