2014-08-31 58 views
1

如何用“”替换我从HTML文件中解析的&nbsp字符? 有关于该像许多问题,并“接受”的答案,java - 将字符串处理为

How to remove   with Jsoup?

How to remove " " from java string

Handling special entities like & nbsp; , & pound; in HtmlCleaner

但我仍然无法通过使用这些给出的所有解决方案,通过此获得链接,

if(tr.text().replace("\u00a0", "").isEmpty()){ 
    System.out.println("testing---"); 
} 

我在做什么错在这里? 在这种情况下可以使用jsoup吗?我在其中一个答案中读到了这一点。

UPDATE 这是我试图从中获取数据的HTML部分。

<TR> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boBL noWrap>&nbsp;</TD> 
    <TD class=xl27boL noWrap align=right>&nbsp;</TD> 
</TR> 
+0

我已更新问题 – 2014-08-31 09:46:11

+0

你是说noWrop thingy导致问题? – 2014-08-31 09:59:29

+0

不,实际上,JSoup真的可以容忍无效的HTML - 这是它的伟大之处之一。 – 2014-08-31 10:01:02

回答

2

answer given here正常工作。您得到falseisEmpty的原因是tr元素的文本不包含只有&nbsp;个字符  —还有其他空白字符。你要添加trim电话:

if(tr.text().replace("\u00a0", "").trim().isEmpty()){ 
// Here --------------------------^^^^^^^ 
    System.out.println("testing---"); 
} 

我想通了这一点只需通过查看tr.text(),当我跑你的例子HTML到JSoup返回的文本;基本调试。

+0

嗨,先生,它仍然没有为我工作,我有两个TR标签,在第一个TR标签中有一个在最后一个TD中,在下一个TR标签中,我有所有的TD与&nbsp。通过添加trim()(我在发布问题之前已经尝试过),只有第一个TR的最后一个TD使用&nbsp进行检测,而不是下一个TR,它的TD中有所有&nbsp。希望我很清楚 – 2014-08-31 10:07:49

+0

是jsoup真的需要这个吗?不会有正则表达式吗? – 2014-08-31 10:08:01

+0

嗨soni,这不是jsoup,它的简单文本操作 – 2014-08-31 10:08:31

0

从Jsoup得到文件后,使用StringEscapeUtils

StringEscapeUtils.unescapeHtml4(test)); 

使用这个库ORG-Apache的公地lang.jar。