Как мне избежать строки в Java? - PullRequest
24 голосов
/ 09 марта 2010

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

Ответы [ 4 ]

29 голосов
/ 09 марта 2010

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

Конкретный вызов, который вы хотите сделать, связан с "Java escaping"; вызов API - StringEscapeUtils.escapeJava(). Например:

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

распечатает:

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

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

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.3</version>
</dependency>

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

compile "org.apache.commons:commons-text:1.3"
5 голосов
/ 09 марта 2010

StringEscapeUtils подходит для операций со строками

5 голосов
/ 09 марта 2010

Использование:

\\n и \\t

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

4 голосов
/ 09 марта 2010

Дано String s,

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...