Как убрать жесткие места с помощью Jsoup?

Я пытаюсь удалить пробелы (из   сущностей в HTML). Я не могу удалить его с помощью .trim() или .replace(" ", "") и т.д.! Я не понимаю

Я даже нашел на Stackoverflow попробовать с \\u00a0 но не сработал ни тот, ни другой.

Я пробовал это (так как text() возвращает реальные символы пробела, U + 00A0):

System.out.println( "'"+fields.get(6).text().replace("\\u00a0", "")+"'" ); //'94,00 '
System.out.println( "'"+fields.get(6).text().replace(" ", "")+"'" ); //'94,00 '
System.out.println( "'"+fields.get(6).text().trim()+"'"); //'94,00 '
System.out.println( "'"+fields.get(6).html().replace(" ", "")+"'"); //'94,00' works

Но я не могу понять, почему я не могу удалить пробел с помощью .text().

Ответ 1

Ваша первая попытка была почти такой, вы совершенно правы, что Jsoup отображает   на U + 00A0. Вам просто не нужна двойная обратная косая черта в вашей строке:

System.out.println( "'"+fields.get(6).text().replace("\u00a0", "")+"'" ); //'94,00'
// Just one ------------------------------------------^

replace не использует регулярные выражения, поэтому вы не пытаетесь передать буквальную обратную косую черту до уровня регулярного выражения. Вы просто хотите указать символ U + 00A0 в строке.

Ответ 2

Используя библиотеку JSoup,

import org.jsoup.parser.Parser;

String str1 = Parser.unescapeEntities("last week, Ovokerie Ogbeta", false);
String str2 = Parser.unescapeEntities("Entered » Here", false);
System.out.println(str1 + " " + str2);

Распечатывает:

last week, Ovokerie Ogbeta Entered » Here