замените \n и \r\n с <br/> в Java

Это несколько раз просили относительно нескольких языков, но я не могу заставить это работать. У меня есть строка как это

String str = "This is a string.\nThis is a long string.";

И я пытаюсь заменить \n с
использование

str = str.replaceAll("(\r\n|\n)", "
");

но \n не становится замененным. Я пытался использовать этот Инструмент RegEx для проверки, и я вижу тот же результат. Входная строка не имеет достойным "(\r\n|\n)". Что я делаю неправильно?

65
задан Bala R 16 June 2010 в 20:12
поделиться

5 ответов

У меня работает.

public class Program
{
    public static void main(String[] args) {
        String str = "This is a string.\nThis is a long string.";
        str = str.replaceAll("(\r\n|\n)", "<br />");
        System.out.println(str);
    }
}

Результат:

This is a string.<br />This is a long string.

Ваша проблема в другом месте.

114
ответ дан 24 November 2019 в 15:18
поделиться

Это должно сработать, но не убивайте себя, пытаясь понять это. Просто используйте 2 прохода.

str  = str.replaceAll("(\r\n)", "<br />");
str  = str.replaceAll("(\n)", "<br />");

Отказ от ответственности: это не очень эффективно.

0
ответ дан 24 November 2019 в 15:18
поделиться

Это должно сработать. Вам нужно поставить две косые черты

str = str.replaceAll("(\\r\\n|\\n)", "<br />");

В этом справочнике есть пример, который показывает

private final String REGEX = "\\d"; // a single digit

, что я использовал две косые черты во многих своих проектах, и, похоже, он работает нормально!

-2
ответ дан 24 November 2019 в 15:18
поделиться

У меня работает. Код Java работает точно так, как вы его написали. В тестере входная строка должна быть:

This is a string.
This is a long string.

... с реальным переводом строки. Вы не можете использовать:

This is a string.\nThis is a long string.

... потому что он обрабатывает \ n как буквальную последовательность обратной косой черты 'n' .

2
ответ дан 24 November 2019 в 15:18
поделиться

Немного более надежная версия того, что вы пытаетесь сделать:

str = str.replaceAll("(\r\n|\n\r|\r|\n)", "<br />");
19
ответ дан 24 November 2019 в 15:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: