Jsoup Element.hasText返回true

时间:2015-02-06 20:46:23

标签: java jsoup

jsoup的Element.hasText方法的文档说:

  

测试此元素是否包含任何文本内容(不仅仅是空格)。

但以下示例另有说明:

    String html1 = "<html><!-- no text here --></html>";
    String html2 = "<html><!-- this is text -->&nbsp;</html>";

    System.out.println(Jsoup.parse(html1).hasText());
    System.out.println(Jsoup.parse(html2).hasText());

输出

false
true 

我希望

false 
false

有没有让Jsoup将&nbsp;视为空格?

1 个答案:

答案 0 :(得分:2)

不,你不能。 Jsoup使用Character.isWhitespace()来确定文本是否包含除空格之外的内容。无法更改(配置)此行为。 Character.isWhitespace() Javadoc说:

  

当且仅当它满足以下条件之一时,字符才是Java空白字符:

     
      
  • 它是一个Unicode空格字符(SPACE_SEPARATOR,LINE_SEPARATOR或PARAGRAPH_SEPARATOR),但不是也是一个不间断的空格(' \ u00A0 ','\ u2007' ,'\ u202F')。
  •   

所以你是独立的。

你可以做什么。像

org.jsoup.helper.StringUtil.isBlank(element.ownText().replaceAll("\u00A0", ""));
StringUtil.isBlank(String)中使用了

Element.hasText(),因此您将拥有相同的行为,但所有不可破坏的空格字符都将被删除。