我有一个从EditText获得的字符串。该字符串包含html标签。
Spannable s = mainEditText.getText();
String webText = Html.toHtml(s);
字符串的内容是:
<p dir="ltr">test</p>
<p dir="ltr"><img src="http://files.parsetfss.com/bcff7108-cbce-4ab8-b5d1-1f82827e6519/tfss-0de7a730-3fa9-4a1e-9f82-d34e4f6e2d31-file" /><br /></p>
<p dir="ltr"><a href="22.572646,88.363895"><img src="http://maps.google.com/maps/api/staticmap?center=22.572646,88.363895&zoom=15&size=960x540&sensor=false&markers=color:blue%7Clabel:!%7C22.572646,88.363895" /></a><br /> </p>
现在,我想要做的是,只要有img src标签,我就想在它前面添加一个中心标签。
如何获得以下输出?
<p dir="ltr">test</p>
<p dir="ltr"><center><img src="http://files.parsetfss.com/bcff7108-cbce-4ab8-b5d1-1f82827e6519/tfss-0de7a730-3fa9-4a1e-9f82-d34e4f6e2d31-file" /></center><br /></p>
<p dir="ltr"><a href="22.572646,88.363895"><center><img src="http://maps.google.com/maps/api/staticmap?center=22.572646,88.363895&zoom=15&size=960x540&sensor=false&markers=color:blue%7Clabel:!%7C22.572646,88.363895" /></center></a><br /> </p>
正则表达式可以解决问题还是应该以不同的方式完成?
JSOUP能以任何方式提供帮助吗?是否有其他类型的HTML解析器可以完成这项工作?
答案 0 :(得分:1)
(<img\s+[^>]*>)
您可以尝试使用<center>$1</centre>
替换。请参阅演示。
http://regex101.com/r/sU3fA2/38
像
这样的东西var re = /(<img\s+[^>]*>)/g;
var str = '<p dir="ltr">test</p> \n<p dir="ltr"><img src="http://files.parsetfss.com/bcff7108-cbce-4ab8-b5d1-1f82827e6519/tfss-0de7a730-3fa9-4a1e-9f82-d34e4f6e2d31-file" /><br /></p> \n<p dir="ltr"><a href="22.572646,88.363895"><img src="http://maps.google.com/maps/api/staticmap?center=22.572646,88.363895&zoom=15&size=960x540&sensor=false&markers=color:blue%7Clabel:!%7C22.572646,88.363895" /></a><br /> </p>';
var subst = '<center>$1</centre>';
var result = str.replace(re, subst);
答案 1 :(得分:1)
通过使用Jsoup,您可以使用Element
类Jsoup的wrap()方法。
看起来像这样:
public String wrapImgWithCenter(String html) {
Document doc = Jsoup.parse(html);
doc.getElementsByTag("img").wrap("<center></center>");
return doc.html();
}
答案 2 :(得分:1)
我实施了mourphy建议的JSOUP解决方案。但是,我已经编辑了一点方法,它为我创造了奇迹。新方法是:
public String wrapImgWithCenter(String html){
Document doc = Jsoup.parse(html);
doc.select("img").wrap("<center></center>");
return doc.html();
}
感谢mourphy和vks的帮助!
答案 3 :(得分:0)
使用Regex,您也可以在java中执行此操作:
String formatted = str.replaceAll("(<img\\s+[^>]*>)", "<center>$1</center>");