Как распечатать 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()
Ответы
Ответ 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.