Как избежать строки в Java?

Я читаю исходный файл в Java, но когда я его печатаю (sysout), экранированные символы больше не экранируются. Как я могу избежать символов типа \n и \t в строке в Java?

Вы должны использовать class StringEscapeUtils из Apache Commons Text (вы также можете найти class в Apache Commons Lang3, но он устарел). Вы обнаружите, что в Apache Commons есть много других предложений, которые могли бы послужить полезными для других проблем, возникающих в Java-разработке, чтобы вы не изобретали велосипед.

Конкретный вызов, который вы хотите, имеет отношение к «экранированию Java»; вызов API – это StringEscapeUtils.escapeJava() . Например:

 System.out.println(StringEscapeUtils.escapeJava("Hello\r\n\tW\"o\"rld\n") 

будет распечатываться:

 Hello\r\n\tW\"o\"rld\n 

В этой библиотеке также есть множество других утилит. Вы можете найти текст Apache Commons в Maven Central, и вы добавите его в свой проект Maven следующим образом:

  org.apache.commons commons-text 1.3  

и в случае, если вы используете Gradle:

 compile "org.apache.commons:commons-text:1.3" 

С помощью:

\\n и \\t

Некоторым символам, которым предшествует обратная косая черта ( \ ), образуют escape-последовательность и имеют особое значение для компилятора. Поэтому в вашем случае \n и \t рассматриваются как специальные (новая строка и вкладка соответственно). Поэтому нам нужно избежать обратной косой черты, чтобы сделать n и t обработаны буквально.

Учитывая String s ,

 s = s.replace("\\", "\\\\"); 

Заменяет все \ на \\ .

StringEscapeUtils хорош для операций, связанных с строкой

  • Как найти пробел в строке?
  • Разница между строковым объектом и строковым литералом
  • Лучший способ разделить строку на строки
  • Ошибка: недопустимые операнды типов 'const char ' и 'const char ' для двоичного 'оператора +'
  • Как удалить все пробелы с начала или конца строки?
  • Неизвестная escape-последовательность для строки пути, содержащей обратную косую черту
  • Строковые литералы соответствуют перегрузке bool вместо std :: string
  • Проверьте, является ли строка действительным целым числом
  • Почему строки нельзя изменять в Java и .NET?
  • C # Разделить строку на другую строку
  • Найти общий префикс строк
  • Давайте будем гением компьютера.