замена новой линии Java - PullRequest
       4

замена новой линии Java

4 голосов
/ 14 апреля 2011

Мне интересно, почему я не получаю ожидаемый результат с этим:

String t = "1302248663033   <script language='javascript'>nvieor\ngnroeignrieogi</script>";
t.replaceAll("\n", "");
System.out.println(t);

Вывод:

1302248663033   <script language='javascript'>nvieor
gnroeignrieogi</script>

Поэтому мне интересно, почему \nвсе еще там.Кто-нибудь знает?Является ли \ n чем-то особенным?

РЕДАКТИРОВАТЬ:

Так что у меня возникли проблемы с сопоставлением символа новой строки с a.в выражении регулярного выражения, не понимая, что одно использование использовать опцию DOTALL, поэтому я добавлю, что нужно сделать здесь для дальнейшего использования:

String text = null;
text = FileUtils.readFileToString(inFile);
Pattern p = Pattern.compile("<script language='javascript'>.+?</script>\n", Pattern.DOTALL);
text = p.matcher(text).replaceAll("");
out.write(text);

Ответы [ 2 ]

17 голосов
/ 14 апреля 2011

Строки неизменны.Строковые операции, такие как replaceAll, не изменяют экземпляр, с которым вы его вызываете, они возвращают новые экземпляры String.Решение состоит в том, чтобы назначить измененную строку вашей исходной переменной.

t = t.replaceAll("\n", "");
0 голосов
/ 14 апреля 2011

Да, \n особенный.Это escape-последовательность, обозначающая перевод строки.Вам нужно экранировать его в строковом литерале, чтобы он действительно интерпретировался так, как вы хотите.Добавьте \ перед последовательностью, чтобы она выглядела следующим образом:

"\\n"

Теперь ваша программа должна выглядеть так:

String t = "1302248663033   <script language='javascript'>nvieor\\ngnroeignrieogi</script>";
t = t.replaceAll("\\n", "");
System.out.println(t);

Конечно, если строка t исходит изгде-то вместо того, чтобы быть введенным вами в программу, вам нужно всего лишь добавить дополнительную косую черту в вашем вызове к replaceAll()

Отредактировано согласно комментариям.

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