jsoup / Java - как добавить неразрывный пробел

Вызов [Element].appendtext(" ") приводит к экранированию амперсанда, и пользователь видит амперсанд на отображаемой HTML-странице. Я не хочу, чтобы страница отображала HTML-код.

Я действительно хочу, чтобы html-страница отображала пробелы.

2 ответа

Решение

Неразрывный пробел можно записать в строковый литерал с помощью escape-последовательности Unicode: "\u00A0".

Однако, если вы хотите, чтобы все пробелы внутри элемента отображались буквально, рассмотрите возможность использования обычных пробелов, но применяя свойство CSS, такое какwhite-space: pre;.

Существует библиотека с открытым исходным кодом под названием MgntUtils, которая имеет функцию, которая принимает обычную строку и создает строку для формата Html, в которой будет сохранено форматирование строки. Т.е. все пробелы в строке будут заменены неразрывными пробелами, а все новые строки будут заменены тегами 'br'. Преимущество в том, что если вы просто напечатаете строку как текст, не тормозящие пробелы, это будет выглядеть как обычное пространство, а не как "\u00A0" или побег nbsp. Вы, конечно, увидите теги br, но все же ваша строка будет выглядеть гораздо более читаемой. Вот JavaDoc для метода. Иногда мне это казалось очень удобным. Код просто выглядел бы

String htmlFormattedStr = formatStringToPreserveIndentationForHtml(rawText);

Артефакты библиотеки Maven можно найти здесь, а саму библиотеку в виде файла Jar, а также исходный код и JavaDoc можно найти на Github. Вот ссылка на статью о библиотеке

Другие вопросы по тегам