java 批量去除注释,Java 批量删除html中注释内容的方法

public class HtmlCommentHandler {

/**

* html内容中注释的Detector

*

* @author boyce

* @version 2013-12-3

*/

private static class HtmlCommentDetector {

private static final String COMMENT_START = "";

// 该字符串是否是html注释行,包含注释的开始标签且结束标签""

private static boolean isCommentLine(String line) {

return containsCommentStartTag(line) && containsCommentEndTag(line)

&& line.indexOf(COMMENT_START) < line.indexOf(COMMENT_END);

}

// 是否包含注释的开始标签

private static boolean containsCommentStartTag(String line) {

return StringUtils.isNotEmpty(line) &&

line.indexOf(COMMENT_START) != -1;

}

// 是否包含注释的结束标签

private static boolean containsCommentEndTag(String line) {

return StringUtils.isNotEmpty(line) &&

line.indexOf(COMMENT_END) != -1;

}

/**

* 删除该行中的注释部分

*/

private static String deleteCommentInLine(String line) {

while (isCommentLine(line)) {

int start = line.indexOf(COMMENT_START) + COMMENT_START.length();

int end = line.indexOf(COMMENT_END);

line = line.substring(start, end);

}

return line;

}

// 获取开始注释符号之前的内容

private static String getBeforeCommentContent(String line) {

if (!containsCommentStartTag(line))

return line;

return line.substring(0, line.indexOf(COMMENT_START));

}

// 获取结束注释行之后的内容

private static String getAfterCommentContent(String line) {

if (!containsCommentEndTag(line))

return line;

return line.substring(line.indexOf(COMMENT_END) + COMMENT_END.length());

}

}

/**

* 读取html内容,去掉注释

*/

public static String readHtmlContentWithoutComment(BufferedReader reader) throws IOException {

StringBuilder builder = new StringBuilder();

String line = null;

// 当前行是否在注释中

boolean inComment = false;

while (ObjectUtils.isNotNull(line = reader.readLine())) {

// 如果包含注释标签

while (HtmlCommentDetector.containsCommentStartTag(line) ||

HtmlCommentDetector.containsCommentEndTag(line)) {

// 将成对出现的注释标签之间的内容删除

//

if (HtmlCommentDetector.isCommentLine(line)) {

line = HtmlCommentDetector.deleteCommentInLine(line);

}

// 如果不是注释行,但是依然存在开始标签和结束标签,结束标签一定在开始标签之前

// xxx -->contentcontent

else if (inComment && HtmlCommentDetector.containsCommentEndTag(line)) {

// 将 inComment 设置为false。获取结束标签之后的内容

inComment = false;

line = HtmlCommentDetector.getAfterCommentContent(line);

}

// 保存该行非注释的内容

if (StringUtils.isNotEmpty(line))

builder.append(line);

}

// 保存该行不存在任何注释标签的并且inComment = false的行

if (StringUtils.isNotEmpty(line) && !inComment)

builder.append(line);

}

return builder.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值