Подтвердить что ты не робот

Как распечатать escape-символы в Java

Когда у меня есть строка, например:

String x = "hello\nworld";

Как заставить Java печатать фактический escape-символ (а не интерпретировать его как escape-символ) при использовании System.out?

Например, при вызове

System.out.print(x);

Я бы хотел:

hello\nworld

И не:

hello
world

EDIT: Приносим извинения, я должен уточнить этот вопрос. Я не могу контролировать, что будет 'x', это может быть строка, которую я читал из файла. Я хотел бы, чтобы x сохранял свои escape-символы во время обычного выполнения программы, но для целей отладки я хотел бы видеть фактические escape-символы.

Написание метода, при котором субтитры каждого escape-символа кажутся излишними. Разве нет лучшей библиотеки печати, кроме PrintStream, которая делает это для меня?

Если вы знакомы с Ruby, подумайте, что x.inspect()

4b9b3361

Ответ 1

Один из способов сделать это:

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)).

Ответ 2

Использовать метод "StringEscapeUtils.escapeJava" в Java lib "org.apache.commons.lang"

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

Ответ 3

Вам нужно избежать самой косой черты:

String x = "hello\\nworld";

Ответ 4

Просто уберите escape-символ.

String x = "hello\\nworld";

Ответ 5

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

Ответ 6

Java имеет свою escape-последовательность, такую ​​же, как в C. используйте String x = "hello\\nworld";

Ответ 7

Попробуйте избежать обратного слэша, например \\n

Ответ 8

Возможно, вы захотите проверить этот метод. Хотя это может сделать больше, чем вы планируете. Кроме того, используйте методы замены строк для новых строк, возврата каретки и символов табуляции. Имейте в виду, что есть также такие вещи, как unicode и hex sequence.