用java字符串方法去除HTML代码标签的问题
比如有这样的html代码:<divid="mini_nav_qq"><li><atarget="_top"href="http://lady.qq.com/emo/emo...
比如有这样的html代码:
<div id="mini_nav_qq"><li><a target="_top" href="http://lady.qq.com/emo/emotio.shtml">情感</a></li><li><a target="_top" href="http://lady.qq.com/beauty/beauty.shtml">美容</a></li></div>
想要实现把<a>、<div>等标签中的“target”、“href”、"id"、"style"等信息去除,只留下单纯的<a>、<div>形式。我用了java字符串匹配替换的方法:
private static String removeInTag(String a) {
StringBuffer aaa = new StringBuffer();
aaa.append(a);
int BeginIndex = 0;
while(BeginIndex != -1){
BeginIndex = aaa.indexOf("<",BeginIndex);
int StarIndex = aaa.indexOf(" ", BeginIndex);
int EndIndex = aaa.indexOf(">", BeginIndex);
int PreventErr = aaa.indexOf("<", BeginIndex);
if ((PreventErr > EndIndex) && (StarIndex > StarIndex)){
aaa.replace(StarIndex, EndIndex, "");
}
}
return aaa.toString();
}
======================================
但出现了死循环,死循环的原因何在?
同时由于本人初学java,所以这个方法可能不是最好方法,有没有更高效、更不易出错的方法呢?有好的方法okey的再加分,谢谢!
这个removeInTag(String a)方法是利用html标签名后带的空格来进行替换。如<div>若有内嵌样式,则会写成<div style=...>.
==================================
一楼朋友你说的我这就是这样的,替换成"",就是删除。。 展开
<div id="mini_nav_qq"><li><a target="_top" href="http://lady.qq.com/emo/emotio.shtml">情感</a></li><li><a target="_top" href="http://lady.qq.com/beauty/beauty.shtml">美容</a></li></div>
想要实现把<a>、<div>等标签中的“target”、“href”、"id"、"style"等信息去除,只留下单纯的<a>、<div>形式。我用了java字符串匹配替换的方法:
private static String removeInTag(String a) {
StringBuffer aaa = new StringBuffer();
aaa.append(a);
int BeginIndex = 0;
while(BeginIndex != -1){
BeginIndex = aaa.indexOf("<",BeginIndex);
int StarIndex = aaa.indexOf(" ", BeginIndex);
int EndIndex = aaa.indexOf(">", BeginIndex);
int PreventErr = aaa.indexOf("<", BeginIndex);
if ((PreventErr > EndIndex) && (StarIndex > StarIndex)){
aaa.replace(StarIndex, EndIndex, "");
}
}
return aaa.toString();
}
======================================
但出现了死循环,死循环的原因何在?
同时由于本人初学java,所以这个方法可能不是最好方法,有没有更高效、更不易出错的方法呢?有好的方法okey的再加分,谢谢!
这个removeInTag(String a)方法是利用html标签名后带的空格来进行替换。如<div>若有内嵌样式,则会写成<div style=...>.
==================================
一楼朋友你说的我这就是这样的,替换成"",就是删除。。 展开
4个回答
展开全部
可以通过replaceAll方法进行字符串替换,之后替换的内容用正则表达式来匹配。举例
String ss="<div id='mini_nav_qq'><li><a target='_top' " +
"href='http:// lady.qq.com/emo/emotio.shtml'>情感</a></li><li>" +
"<a target='_top' href='http://lady.qq.com/beauty/beauty.shtml'>美容</a></li></div>";
String ss=ss.replaceAll("<(/?\\S+)\\s*?[^<]*?(/?)>","<$1$2>");//通过只保留"<“后面的字符串,之后删除空格和后面的内容,快捷的实现去除操作(此方法通用于所有的标签去除,只需要传入不同的ss值)。
结果就是:<div><li><a>情感</a></li><li><a>美容</a></li></div>。
展开全部
按照<> 一对对的遍历处理,如:处理<div id="mini_nav_qq">时,将第一个空格到倒数第二个字符之间的字符串删除即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
试试这个
public class DelHTML {
public static void main(String[] args){
String html = "<div id=\"mini_nav_qq\"><li><a target=\"_top\" href=\"http://lady.qq.com/emo/emotio.shtml\">情感</a></li><li><a target=\"_top\" href=\"http://lady.qq.com/beauty/beauty.shtml\">美容</a></li></div>";
System.out.println(removeInTag(html));
}
private static String removeInTag(String a) {
String reg = "\\s\\w+=\\\"[^\"]+\\\"";
//System.out.println(a.replaceAll(reg, ""));
return a.replaceAll(reg, "");
}
}
public class DelHTML {
public static void main(String[] args){
String html = "<div id=\"mini_nav_qq\"><li><a target=\"_top\" href=\"http://lady.qq.com/emo/emotio.shtml\">情感</a></li><li><a target=\"_top\" href=\"http://lady.qq.com/beauty/beauty.shtml\">美容</a></li></div>";
System.out.println(removeInTag(html));
}
private static String removeInTag(String a) {
String reg = "\\s\\w+=\\\"[^\"]+\\\"";
//System.out.println(a.replaceAll(reg, ""));
return a.replaceAll(reg, "");
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
class Test {
public static void main(String [] a){
String ss="<div id='mini_nav_qq'><li><a target='_top' " +
"href='http:// lady.qq.com/emo/emotio.shtml'>情感</a></li><li>" +
"<a target='_top' href='http://lady.qq.com/beauty/beauty.shtml'>美容</a></li></div>";
String ss2=ss.replaceAll("(\\<\\w+\\s*)[^\\>]*", "$1");
System.out.println(ss2);
}
}
public static void main(String [] a){
String ss="<div id='mini_nav_qq'><li><a target='_top' " +
"href='http:// lady.qq.com/emo/emotio.shtml'>情感</a></li><li>" +
"<a target='_top' href='http://lady.qq.com/beauty/beauty.shtml'>美容</a></li></div>";
String ss2=ss.replaceAll("(\\<\\w+\\s*)[^\\>]*", "$1");
System.out.println(ss2);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询