2015-10-06 97 views
0

它在Android上,並且需要在加載到WebView之前修復html。如何替換超鏈接中的某些文本

通常它可以通過

(<a[^>]+>)(.+?)(<\/a>) 

做才能獲得組$ 1,則替換文本。

如果< a> tag內有其他未知的孩子會怎麼樣? 下面的例子有< a> < p> ...文本</p> </a>,但< p>可能不知道。

真的是它只需要替換元素內任何子元素的文本元素的內容。

<a href="http://news.newsletter.com/" target="_blank"> 
    <p><img alt=「Socialbook" border="0" height="50" 
    src="http://news.newsletter.com/images/socialbook.gif" width="62"> 
    THIS IS THE TEXT NEEDED TO REPLACE<p> 
</a> 

這可以在JAVA內完成,還是必須在WebView的javascript內完成?

+0

$ regex =「〜> [\ w \ s] +?<〜」; – jessica

+0

不要使用正則表達式。 – njzk2

回答

2

您可以使用任何Java html解析器。例如。 JSoup

String html = "<html><head><title>First parse</title></head>" 
    + "<body><a href="..."><p>Parsed HTML into a doc.</p></a></body></html>"; 
Document doc = Jsoup.parse(html); 
Elements links = doc.select("a"); 
for (Element link : links) 
    link.text("~" + link.text() + "~"); 

Element API文檔。

+0

好的建議,是否有示例顯示如何將更改應用到所有文本內容元素? – lannyf

+0

在http://stackoverflow.com/questions/30425002/how-i-can-replace-text-in-the-each-tag-using-jsoup發現了一個示例,在這裏複製。 Element entry = doc.select(「div」)。first(); 元素tags = entry.getAllElements(); (子節點child:tag.childNodes()){ if(child instanceof TextNode &&!((TextNode)child).isBlank()){0} ); //(textNode)child).text(「word」); //文本 ((TextNode)child).text //替換爲文字 } } } – lannyf

相關問題