Как убрать жесткие места с помощью 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