用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=...>.

==================================
一楼朋友你说的我这就是这样的,替换成"",就是删除。。
展开
 我来答
198901245631
2015-06-27 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1740万
展开全部

可以通过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>。

ljr03601
2010-05-12 · TA获得超过164个赞
知道答主
回答量:26
采纳率:0%
帮助的人:8.1万
展开全部
按照<> 一对对的遍历处理,如:处理<div id="mini_nav_qq">时,将第一个空格到倒数第二个字符之间的字符串删除即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
corruptsatan
2010-05-12 · TA获得超过1108个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:619万
展开全部
试试这个

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, "");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友27642d3
2010-05-12 · TA获得超过681个赞
知道小有建树答主
回答量:236
采纳率:0%
帮助的人:357万
展开全部
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);

}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式